1

クライアント側で製品をカスタマイズできるインタラクティブなhtml5アプリがあります。ユーザーがカスタマイズすると、個々のコンポーネントの価格に基づいて価格が更新されます。

これが完了したら、その人はチェックアウトを押します。カスタマイズをサーバーに送信すると、サーバーがチェックアウト プロセスを引き継ぎます。

誰でも POST データを偽装できるため、価格データをサーバーに送信しても意味がないことは明らかです。そこで、選択したコンポーネント (カスタマイズ データと共にサーバーに送信) に応じて価格を再生成し、代わりにチェックアウト時に表示するサーバー サイド スクリプトを作成してみました。ただし、複雑なカスタマイズが提供されているため、サーバー側の計算は非常に困難であることがわかっています。そして、サーバー側でクライアント側のカスタマイズ ロジック全体を書き直す必要があるようです (これは大変な作業です)。

サーバー側のスクリプトを書き続ける前に、偽装できない方法 (おそらく非対称キー認証) で価格データをサーバーに送信できるかどうかを知りたいと思いました。

4

2 に答える 2

2

クライアント側のコードを決して信用してはいけません。クライアント側のコードを書き直すという頭痛の種を避けたい場合は、関連する JavaScript をサーバーに配置して、サーバー コードから呼び出すことができます (そうすべきだと言っているわけではありません) 私が推奨するもう 1 つの方法は、ユーザーがカスタマイズを完了したら、完全なポストバックの内容に基づいて価格を再計算し、再計算された価格をユーザーに表示して確認できるようにすることです。そうすれば、クライアント側の悪ふざけが発生した場合でも、ユーザーは実際の価格を取得でき、以前の価格と少しでも異なる場合は、サポート担当者がすべてを聞くことができると確信しています.

于 2013-03-11T17:09:05.680 に答える
2

クライアントが送信する情報を決して信用しないでください。

あなたの質問に答えるために、暗号化を使用してクライアントからサーバーにデータを送信することができます。ただし、ここでの問題は、暗号化される前でも、暗号化されているデータを変更できることです。したがって、暗号化は実際には解決策ではありません。クライアントは暗号化の前にデータを変更する可能性があり、サーバー側のチェックがない場合、サーバーはこれを認識しません。

公開鍵と秘密鍵の暗号化を使用しても、これは安全ではありません。ユーザーからサーバーへのデータが改ざんされないという保証のみがあります。第三者がなりすますことはできませんが、ユーザーがなりすますことができるため、暗号化が無意味になります。そのため、ユーザーが有効な正当な情報を送信することを信頼しないでください。

サーバー内のすべてを再確認する必要があります。また、プライバシーが問題でない限り、暗号化は必要ありません (これはおそらくあなたの説明に基づいています)。これは、https を使用することで簡単に解決できます。

作成したクライアント側の JavaScript は、ユーザーへの即時フィードバックとして機能し、ユーザーがフォームに変更を加えたときに価格を確認できます。これは、フォームの送信時にサーバーが処理する必要がある情報をサーバーが処理するのを待つ必要がないため、優れています。

于 2013-03-11T17:09:43.817 に答える