4

両方になるWebアプリケーションがあるとしましょう

  • インターネット経由でアクセスできるホスト型ソリューション
  • 「イントラネット」アプリケーションとして使用するためにローカルにインストールすることができます

このWebアプリケーションのライセンスを適用するための最良の方法は何でしょうか。基本的に、クライアントのアクセスのオン/オフを簡単に切り替えることができます。フローは次のようになると思っていました。

クライアントはローカルにインストールします--->中央サーバーで承認します--->アクセスを許可/拒否します

また、基本的にアプリケーションの特定の機能をオンまたはオフにして、無料トライアルを提供できることを確認できるようにしたいと思います。また、「廃業」した場合にどうなるかについても考慮する必要があります。

4

1 に答える 1

6

あなたは正しい考えを持っています、

中央サーバーを使用します(これはホストされたソリューションにすることができます)、

ホストされている(外部)ソリューションでライセンスチェッカーを構築している場合は、ライセンスキーEGの暗号化された投稿を必要とするWebリクエストを追加するだけです。

{ドメイン}へのリクエスト

https://{domain}.{tdl}/licenceValid/internal

クエリ文字列を投稿する

licenceCrypt={licenceKey(though SHA1)}&companyId={company_id}

チェックを行ってから文字列JSONを返します。プレーンテキストバージョンが機能するようになったら、暗号化を導入して、インターネット経由でプレーンテキストを送信しないようにすることができます。

Succsess : {'status':'OK','expire':'20/07/2012 00:00:00', 'check':'18/07/2012 00:00:00'}
Fail     : {'status':'FAIL','Message':'Licence has expired'}

次に、この情報キャッシュを使用してその結果をキャッシュします。次に、この情報をファイルからロードし、日付が現在の日付よりも小さいかどうかをチェック値で確認できます。ただし、これが失敗し、ライセンスの有効期限が切れていない場合は、引き続きアプリケーションを使用できるようにしますが、ライセンスの検証でエラーが発生したことを通知する通知を表示します。ライセンスは、キャッシュされた日付ブロックからライセンスが期限切れになった場合、{date}に期限切れになります。アプリケーションは、インターネットへのサーバー接続を確認する必要があることを通知し、それが機能しない場合は電話をかけます。

他のすべてが失敗した場合は、小さなアプリケーションがインストールされたペンドライブを使用して、新しいライセンスの詳細でキャッシュファイルを更新し、ソフトウェアを再度使用できるようにすることができます。キャッシュには、双方向暗号化EGbase64ただし、もう少し強力なものをお勧めします

次に、ホストされたソリューションをクラスにロードして、要求されたバージョンのライセンスを投稿なしでチェックできます。ホストされたアプリケーションとライセンスサーバーを分離したい場合は、ローカルコピーに同じチェックを実装して、 2つの異なるコードベース

注: CompanyIdを介して送信する必要はありません。データベースを検索するには、DBのSHA1関数を使用し、直接ルックアップチェックを実行して有効期限などを取得します。

安全なデータ: ハッキングを減らすために何らかの理由で公開できないデータを保持しているような安全なアプリケーションを実装する場合は、ライセンスシステムを別のポートに作成し、サーバーのセットアップで、 iptablesはこれを非常に簡単に実行できるため、最初にLinuxルーティングボックスを外部呼び出しするのが理想的です。Windowsでのセットアップがどれほど簡単かはわかりません。

更新: ライセンスが無効になるのを防ぐ

人々がライセンスを「無効」にし、ローカルの変更を必要としないようにするために実装できるもう1つの機能は、ライセンスサーバーでホスト名を検証することです。これにより、ライセンスキーを初めて使用するときに、ホスト名がデータベースに保存されます。別のホスト名から別のリクエストが届いた場合は、ライセンスキーに連絡する必要があることを伝えます。ホスト名が変更されたため、ライセンスを再度有効にします。ほとんどの企業は静的IPアドレスを実行する必要があるため、そこにISPホスト名

これでも経験豊富な人々を止めることはできず、ループバックハックをバイパスしてアプリケーションがサーバーと通信するのを防ぐことができます。その後、ループバックにダミーサーバーを設定して誤った情報で応答する必要があります。

エクストラマイル

ライセンスシステムをC#ライブラリにし、アプリケーションが新しいバージョンをダウンロードして既存のアセンブリをアンロードし、新しいDLLアセンブリにロードすることで、これを防ぐことができます。パブリックメソッドの名前を変更しないように注意する必要があります。サーバーを壊したり、クライアント側の完全な更新を行わずにセキュリティを強化します。これにより、通信で何らかの形式のAESまたは証明書ベースの暗号化を使用し、埋め込みリソースを使用して証明書をDLLにコンパイルすることもできます。

上記を使用すると、さらに1つ進んで、すべてのライセンスキーに対して新しい証明書を作成できます。これにより、「無効化」が非常に困難になります*。

*別の場合と同じように、これにはサーバーがDLLをコンパイルする必要があります。ホスティングサーバーではこれを行わないことを強くお勧めします。これは、MSBuildの使用を最小限に抑え、すべてのデータをコンパイルするので、変更するのは証明書だけです。これは、.pdbファイルを保持し、はるかに高速にコンパイルする必要があることを意味します。

于 2012-07-16T15:15:12.367 に答える