0

Rails でアプリを作成していますprotect_from_forgeryが、application.rb. また、モバイル アプリがデータを使用して通信するための RESTful API も作成しJSONました。protect_from_forgeryモバイル アプリが Rails アプリケーションと対話するために、JSON リクエスト をオフにしていると主張するサイトをいくつか見かけます。

これはCSRFの問題をどのように解決しますか? 悪意のあるサイトが、ユーザーに代わって望ましくない変更を実行する JSON POST 要求を持たないようにすることはできますか?

したがって、この問題を解決するために、モバイル アプリのみが使用するカスタムmime-typeまたはおそらくを使用することにし、次のことを実行しました。special keyprotect_from_forgery

  1. csrf トークンがとして存在するかどうかを確認しますhidden div(Web アプリの場合は true で、既定で含まれています)。
  2. special key存在しない場合は、これまたはを確認してくださいmime-type

この問題に対抗するために、これを達成する方法、または同様の方法はありますか?

アップデート

私が問題を考えすぎていたことが判明しました。Rails は「魔法のように」、例外を発生させることなく、モバイル アプリからのリクエストを自動的かつ適切に処理します。したがって、本質的には、まったく変更を加える必要はありませんでした。

私は Rails がこれをどのように実現するかを十分に確認していませんでしたが、教育的に言えば、これは興味深いことかもしれません。

4

1 に答える 1

2

ActiveResources を使用する必要はありません。リクエストを xml として送信すると、protect_from_forgery がバイパスされます。

curl -H "Content-Type: text/xml" -d "<support-request><from>...</from></support-request>" -X POST http://localhost:3000/support_requests.xml -i

それはかなり簡単なはずです。

于 2012-03-04T08:05:51.953 に答える