You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。 CSRFおよびその対策の仕組みに関してはこちら↓ これで完璧!今さら振り返る CSRF 対策と同一オリジンポリシーの基礎 - Qiita この記事は,PHPにおけるワンタイムトークンを用いた実装例を示すものです。執筆日が少々古いものになるのでご了承ください。 コメント欄の議論に関するまとめ 以下,XSS脆弱性が存在しない前提.この脆弱性があるとあらゆるCSRF対策がほとんど意味をなさなくなるので,まずここから潰しておくこと. セッション固定攻撃に対する対策 ログイン後にsession_regenerate_idを必ず実行する. ログアウト後にsession_destroyを必ず実行する. CSRF攻撃に対する対策 セッションIDを抜か
こないだ、よくわからんので今度調べると書いたところについて。 CSRFの対応について、rails使いが知っておくべきこと - おもしろWEBサービス開発日記 まずクッキーとセッションの違いから。自分の認識はこんな感じ クッキーもセッションも、ブラウザにデータを保存させる仕組み。 クッキーはデータをそのままブラウザに保存させる。 セッションはセッションIDをブラウザに保存させ、データはサーバ側が保持する。サーバはセッションIDをキーにしてデータを取り出す。 railsでクッキーを設定するには railsでは、クッキーは基本的に使わないと思ってますが、一応使い方をメモ。 cookies[:hoge] = { :value => "value", :expires => "30.days.from_now", :path => "/store", :domain => "www.example.
こんにちは、鈴木です。 CSRF 対策で使用する protect_from_forgery ですが、Rails3 からはトークンの検証 NG の場合に reset_session するように動作が変更されました。 今まではトークンの検証で NG だった場合に InvalidAuthenticityToken が raise されていましたが、デフォルトでは reset_session されるようになりました。 protect_from_forgery の動作 protect_from_forgery は、以下のようにコントローラに書いておくことで、リクエストとセッションに持たせたトークンが等しいことを検証してくれます。
自分で作った Rails 製ウェブアプリで出会った話ですが、ちょっと原因に悩んだので書いておきます。 概要 Rails 製のウェブアプリのログを眺めていると、しばしば CSRF トークン検証エラーが記録されていました。ログインページでログインする際にデータを POST したときに、 CSRF トークン検証エラーが出たようです。 状況的に、外部から攻撃を受けているわけではなく、ユーザーもブラウザからアクセスしたようでした。 結局のところ、バグなどではなく、期待される挙動だったのですが、ちょっと悩んだので書いておきます。 再現手順 ブラウザ起動後の初回アクセスで、ウェブアプリのページを複数同時に開くと発生します。 「複数同時」というのがポイントです。 具体的には、以下の手順で発生します。 準備として Rails 製ウェブアプリで POST を使う複数のページを、二つブックマークに登録しておきま
RailsではフォームのAjax化を機能として提供してくれるが、あえてそれを使わないパターンを試してみる ポイントはcsrf対策向けの処理を自分で書かなければならないというところか # POST /users # POST /users.json def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } format.json { render :show, status: :created, location: @user } else format.html { render :new } format.json { render json
Photo by hoerner_brett 秋山です。 私は主にPythonを使って開発をしているので、今回はPythonの便利なライブラリやフレームワークを紹介していきたいと思います。 といっても割と定番のものを中心に使っているので、既にPythonをがんがん使っている人にとっては「知ってるわ!」というものも多いかと思います。「最近Python書くようになりました~」という人たちにも「これ良い!」ってものが見つかればと思います。 ちなみに前回はPython2系と3系の違いについて書いてますので、「3系に移行しよっかなー」と考えている人は合わせて見てみてください。 paiza.hatenablog.com ■Pythonの便利なライブラリやフレームワーク ◆Web開発系フレームワーク ◇Django みんな大好き有名なDjango。RubyでいうところのRailsのような……全部のせ的な
こんにちは。技術部の国分 (@k0kubun) です。 3/28にクラウドワークスさんで行なわれたRails Upgrade Casual Talksで、Railsアップグレードの際にクックパッドが行なっている工夫について紹介しました。 影響範囲の予測が難しいRailsのアップグレードを安全に行なうための動作確認のやり方について参考になればということで、本記事でも改めて紹介いたします。 CookpadのRailsアップグレードの流れ Rails 4.1から4.2にアップグレードした際の例を紹介します。 CIにRails 4.2用ジョブを用意 まずはRails 4.2にアップグレードするためのrails42ブランチでテストを通します。リリースするまでこのブランチはmasterからrebaseし続けるので、リリースまでテストを通る状態を保つため、CIにrails42ブランチ用のジョブを用意しま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く