2012-02-25 7 views
0

私はRailsにアプリケーションを構築していますが、私はapplication.rbprotect_from_forgeryを持っています。また、JSONデータを使用して通信するモバイルアプリ向けのRESTful APIを構築しました。モバイルアプリがレールアプリケーションとやりとりするために、JSONリクエストのためにprotect_from_forgeryをオフにするサイトがあります。Railsはモバイルアプリケーションでprotect_from_forgeryを実装します

これはどのようにCSRFの問題を解決しますか?悪意のあるサイトに、ユーザーに代わって望ましくない変更を行うJSON POST要求がない可能性がありますか? CSRF場合

  1. チェック:

ので、この問題を解決するために、私は次のことを実行protect_from_forgeryを持っている、おそらくカスタムmime-typeまたは唯一のモバイルアプリが使用するspecial keyを使用し、することを決めましたトークンはhidden divとして表示されます(Webアプリケーションの場合はtrue、デフォルトでは含まれます)。

  • 存在しない場合は、special keyまたはmime-typeを確認してください。
  • この問題を解決するには、これを達成する方法はありますか、それと同様ですか?

    更新

    それは私が問題をオーバー思っていたことが判明します。 Railsは "魔法のような"もので、例外を発生させることなく自動的に適切にモバイルアプリからのリクエストを処理していました。ですから、本質的には何も修正する必要はありませんでした。

    私は、Railsがこれをどのように達成しているかをはっきりと確認していませんでした。つまり、教育的に言えば、これはまだいくつかのことを知っている可能性があります。

    +0

    モバイルアプリのリクエストはどのように行われますか? – Dad

    答えて

    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 
    

    これはかなり簡単です。