webHttpBinding
エンドポイントをクライアントに公開するために、バインド付きの WCF サービスを使用しています。サービスは IIS (.svc) によってホストされます。クライアントはenableWebScript
動作を使用して自動的に生成される JavaScript です。すべてのメソッドは POST を使用しています。
このサービスに対して CSRF 攻撃を行うことは可能ですか?
次のオプションを検討しました。
- AJAX - クロスサイト リクエストが許可されていないため、不可能です (私たちのサイトは XSS になりにくいと仮定しています)。
- HTML フォームの送信 - サービスには、HTML フォームを使用して設定できない特定の HTTP ヘッダーが必要なため、不可能です
他のオプションはありますか?Flash、Silverlight、Web ソケット、または何か他のものですか?
有効なリクエストは次のようになります。
POST http://site/Service.svc/ServiceMethod HTTP/1.1
Host: site
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: cs,en-us;q=0.8,en;q=0.5,pl;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Content-Type: application/json; charset=utf-8
Referer: http://site/
Content-Length: 33
Cookie: cookies, session id, etc.
Pragma: no-cache
Cache-Control: no-cache
{"param1":11,"param2":"123"}
明確にするために:私は自分のサービスを保護しようとしています。攻撃を行いません。すべての呼び出しに「認証トークン」を追加することを検討していますが、最初に努力する価値があるかどうかを知りたいです。