0

私は現在、ユーザーが自分のユーザー プロファイルのアバターをアップロードできる、Rails を利用したアバター アプリに取り組んでいます。

カスタム HTTP ヘッダーを使用して、パブリック アップロード リクエストをブロックし、自分のアプリからのリクエストのみを許可したいと考えています。Ruby on Railsでこれを行うにはどうすればよいですか?

AJAX を使用してアバターをアップロードしているので、これは少し難しいかもしれません。また、公開 HTML コードにヘッダーを表示したくないと思います。そうしないと、ヘッダーを追加する目的が無効になります。

4

2 に答える 2

0

追加すると

 protect_from_forgery

アプリケーションコントローラーに送信すると、サードパーティのリンクからのすべての NON Get リクエストがブロックされます。サーバーに送信されるすべてのデータをチェックするために使用される認証トークンを使用して、各フォームに非表示の入力値を追加します。

参考文献

http://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf

http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html

Rails 3.1 - CSRF は無視されますか?

于 2012-07-30T21:51:04.177 に答える
0

カスタム HTTP ヘッダー (たとえばX-Foobar-Validity-Status: valid) を実装し、before_filter.

class YourController < ApplicationController
  before_filter :check_header

  def check_header
    unless request.headers['X-Foobar-Validity-Status'] == "valid"
      render json: {"error" => "You are an evil attacker. Go away"}
    end
  end
end

ただし、これは悪い考えだと思います。

  • 攻撃者は、jQuery を使用していても、HTTP 要求のパケット ダンプを読み取り、ヘッダーを追加できます。jQuery.ajaxheaders オプションを参照してください。
  • 独自のヘッダーを使用する代わりに、User-Agentこの目的で使用します。

代わりに、protect_from_forgeryレールのメカニズムを使用することをお勧めします。それはあなたの人生をより簡単にし、より安全にします。アプリで http リクエストによって認証トークンをフェッチし、リクエストとともに送り返すだけです。これにより、侵入者を締め出すことができます。

于 2012-07-30T21:55:19.877 に答える