2011-07-08 10 views
2

私のASPページでjQuery GetJSON呼び出しを使用しています。これは、次のコードのようなものです:jQuery GetJSONのセキュリティ問題。 URLをコピーしてブラウザに貼り付ける

$.ajax({ 
    url: myUrl/myPage.aspx?callback=BookARoom, 
    dataType: 'json' 
}); 

、部屋を。これは実際に私のシステムで予約された部屋になってしまいますが、問題は、ユーザーのコピーの場合はこのURLとブラウザに貼り付け、それをすることをあるでしょう予約される。彼はすでにセッションを持っているので、私はASPページでそれを区別することはできません。どうすればこれを防ぐことができますか?

+0

これはセキュリティの問題とどのくらい正確ですか?もし検証が必要なものがあれば、とにかくそれをサーバー側にする必要があります。したがって、ユーザーが手動でリクエストを作成したかどうか、または実際にjavascriptから来たものかどうかは気にするべきではありません。 – ThiefMaster

+0

私はあなたにリンクを送ってきて、ログインしているので部屋を自動帳簿に入れていることを考慮してください(または悪い場合は、 ...それでも起こったことは分かりません)。 – Paul

答えて

0

平均的なユーザーがそれを行なわないようにするには、HTTP動詞としてGETの代わりにPOSTを使用する必要があります(要件はサーバー側に設定する必要があります)。次のように入力します。ajax呼び出しでPOSTを使用する必要があります。

「高度な」ユーザーがその行為をなりすますのを防ぐため、短い答えはできません。あなたが思いつくことができる何かの周りに方法があります。他のWebサイトにリンクを埋め込まないようにするには、CSRFトークンの使用を検討してください。

1

ここには2つの問題があります。

最初の問題:GETリクエストは安全であると思われます。 GETリクエストをトリガーできるものはたくさんあります。 GET要求に基づいて状態を変更している場合、コードが危険に壊れてしまいます。 POSTを使用してください。

第2に、他のウェブサイトでは、ユーザーがあなたのウェブサイトにリクエストを行う可能性があります。これはCross-Site Request Forgeryとして知られています。典型的な解決策は、各要求に対してノンスを要求することです。ナンスは他のウェブサイトには不明であるため、リクエストを偽造することはできません。私が提供したリンクは、あなたに代替の解決策に関するさらなる読書を提供します。

関連する問題