2

サーバーにajaxPOSTリクエストを送信する必要があります。

リクエストが自分でリクエストを書いているユーザーからではなく、スクリプト自体から発信されていることを確認する必要があります。これを行うための安全な方法はありますか?スクリプトはPOSTリクエストに署名またはエンコードして、後でサーバーの秘密鍵で復号化できますか?そして、どういうわけか、ユーザーが私の公開鍵を使用して暗号化するのを防ぐことができますか?

私はこれをフィルタリングの目的だけで行っているわけではないので、単純な古いサーバー側の検証ではうまくいきません。

4

4 に答える 4

9

Javascriptで行うことはすべて、クライアント側で行われているため、表示および分析できます。したがって、クライアント側で情報を安全に暗号化することはほとんど不可能です。これにより、検証を実行できる唯一のポイントとしてサーバーが残ります。

また、入力がスクリプトからのものなのか、ユーザーが手作りしたものなのかを気にするのはなぜですか?入力が有効であり、ルールで定義されているとおりに許可されている場合、違いはありません。


この種の状況では、疑わしい場合は、クライアント/サーバーの分離の重要性を確認する必要があります。あなたのサーバーはあなたのアプリです、それはあなたが世話をする必要がある唯一の重要なコンポーネントです。すべての入力は一般的に信頼されておらず、すべての出力は正確に開示しようとしているものでなければなりません。

ユーザーに渡すHTML/JSインターフェースは、人間がサーバーと通信するための単なる助けになりますが、サーバーを離れた後でも信頼できる、またはセキュリティで保護できるという意味ではありません。

于 2010-02-22T06:41:42.423 に答える
5

他の答えは正しいです。これは基本的に不可能です。おそらく、実用的な観点からできる最善の方法は、JavaScript を難読化して、JavaScript を見ようとする人を思いとどまらせるための本当に厄介な方法を調べることですが、やる気のある人なら、それほど努力しなくてもこの問題を回避できると確信できます。 . http://en.wikipedia.org/wiki/Obfuscated_code

于 2010-02-24T22:56:04.197 に答える
4

リクエストがスクリプト自体から発信されたものであり、自分でリクエストを書いたユーザーからのものではないことを確認する必要があります。

サーバーの観点からは、「スクリプト」と「ユーザー」は区別できません。あなたが求めていることは、根本的に不可能です。

于 2010-02-22T07:53:56.317 に答える
-2

秘密鍵(データの署名に使用される)が公開されるため、純粋なJSで公開鍵暗号を使用することはできません。一般的に言って、あなたがやろうとしていることは不可能です。

于 2010-02-22T06:39:45.950 に答える