ユーザーが登録コードを使用して製品の試用期間を延長できるサイトがあります。電子メールからのリンク(URLにキーが含まれている)をクリックしてこのサイトにアクセスすると、登録コードが記載されたライトボックスが表示されます。現在、登録コードをHTMLで表示し、CSSで非表示にしています。URLにjavascriptで正しいキーがあることを確認したら、登録コードを表示します。ただし、これは、誰でもページのソースを表示して登録コードをコピーできることを意味します。コードを暗号化してビューソースに表示されないようにし、URLに正しいキーがある場合は復号化する方法はありますか?これは、ユーザーごとではなく、製品ごとに1つのコードであるため、サーバー側の認証を行う必要はありません。
7 に答える
コンピューターがそれを知っている場合、ユーザーはそれを知っています。
難読化ゲームをプレイできますが、そのすべてがJavascriptを読みにくくします。しかし、十分に決心したユーザーはとにかくそれを見つけるでしょう、そして彼らが見つけたら、彼らはそれを彼らの友人と簡単に共有することができます。
これを確実に修正する唯一の方法は、ユーザーごとに1つのコードです。
URLにjavascriptで正しいキーがあることを確認します
クライアント側のキーをチェックせず、サーバーでキーを検証します。
これは、有効なユーザーのみが登録コードを取得できるようにする唯一の方法です。
偽性PHPの例:
if( validateKey($_GET['key']) ) {
echo 'The Registration Code';
} else {
echo 'Error';
}
クライアントサイドコードは本質的に安全ではありません。世界中のクライアントマシンに送信するものはすべて考慮し、クレンジングするまでクライアントから送信されるものは信用しないでください。十分に判断されたユーザーは、最初の難読化ルーチンにどれだけの労力を費やしても、コードの難読化を解除します。
サイトに登録コードを表示する代わりに、登録コードを記載したメールをユーザーに送り返すのに役立つもう 1 つのヒント.
Nemo が示唆するように、正しい方法はユーザー向けの 1 つのコードです。
それが役立つことを願っています
前に述べたように、クライアント側はセキュリティ ニーズをカバーしません。
ページがキーを含むサーバーに Ajax リクエストを送信するようにしたほうがよいでしょう。その後、登録コードで応答できます。
さらに良いのは、最初のリクエストでキーを直接検証してから、エラー ページまたは登録情報を含むページを返すことを決定することです。
他の人が答えたように、この検証をサーバー側で行う方が簡単で安全です。
URL キーを php ページにポストする AJAX リクエストを作成すると、正しい登録コードが返されます。
そうは言っても、クライアント側で使用する暗号化ライブラリ(AESなど)を使用する可能性は常にありますが、私が理解していることから、問題を解決するための良いアプローチになるとは思いません。
繰り返しますが、サーバー側で行うのは非常に簡単で、必要なだけ安全です.
HTML に埋め込む前に、登録コード (およびいくつかのマジック クッキー) をサーバーのキーで暗号化します。JavaScript で、登録コードを復号化してキー (URL に含まれる) を検証します。マジック Cookie が一致する場合、有効なキーを取得し、登録コードをユーザーに表示できます。
ソースを表示すると、暗号化された登録コードのみが表示されます。キーがなければ、スヌーパーは登録コードを抽出する方法がありません。
これは、登録コードごとに一意のキーがあることを意味します。これは、登録システムの場合に当てはまります。あなたが言ったようにクリックしたリンクに埋め込まれた、電子メールでユーザーに送信するキー。