2012-01-03 17 views
1

私はAJAXアプリケーションで作業すると、POST経由でパラメータを渡すことがよくあります。アプリケーションの特定の部分では、同じ数のパラメータまたは同じデータセットを送信することがありますが、カスタムパラメータに応じて、完全に異なる処理(挿入または更新ではなく削除など)が行われる場合があります。データを送信するとき、私は通常、このような何かやる:アプリケーションの別の部分にPOST操作、改ざんデータとAJAXセキュリティの問題

$.post("somepage.php", {action: "complete", somedata: data, moredata: anotherdata}, function(data, status) { 
    if(status == "success") { 
     //do something 
    } 
}); 

を、私は同様のコードを持っているが、代わりにdenyまたはその代わりに、コードをトリガする何かのアプリケーションの特定にアクションプロパティを設定するかもしれませんサーバー側でデータを削除または移動します。

POSTリクエストとそれに関連付けられたデータを変更できるツールについて聞いたことがありますが、Firefox用のTamper Dataというツールしか使用していません。私はPOSTリクエストのデータを変更する人が、アプリケーションがバックエンドで何か異なることを(例えばaction: "complete"action: "deny"に変更するなど)するために重要なプロパティを変更するためのスリムでスリムであることを知っていますが、 Webアプリケーションに対する日々の攻撃で発生します。誰もこの種の改ざんを避けるための良い方法を提案できますか?私は、イベントがトリガされたときにアクションが間違っているかどうかをチェックし、他のすべてと一緒にそれを検証するといういくつかの方法を考えましたが、必要なアプリケーションの各部分に対して100行分のコードが追加されていることがわかりますこれらの種類の要求を保護する必要があります。

答えて

2

通常のリクエストと同じように、AJAXコールを行うクライアントを承認する必要があります。ユーザーが自分がしようとしていることを行う権利を持っている限り、問題はありません。 また、ユーザーセッションに格納する認証トークンをprotect against CSRFに渡す必要があります。

0

サーバーはクライアントから受け取ったものを信用できません。セッションと認証(自分が誰であるかを確認する)、SSL/TLS(ネットワークの改ざん防止)、XSRF保護(作成したHTMLからアクションが実行されたことを確認する)を使用して信頼を確立することができます。よくXSS注入を防止するよう注意してください(あなたのhtmlがどのように生成されるかを制御してください)。これらすべてのことは、良質のサーバー側のフレームワークで処理できますが、まだまだ多くの方法があります。だから、おそらくユーザーがいずれかのパーティで過度に破壊的なことをすることができないようにするための措置を講じるべきでしょう。

関連する問題