CSRF
シーエスアールエフ(セキュリティ)
意味 偽の要求の強制実行
CSRFとは?
CSRF(クロスサイトリクエストフォージェリ)は、ユーザーが意図しない操作を、攻撃者が用意した罠サイトなどを経由して強制的に実行させる攻撃手法です。これにより、ユーザーの知らないうちに重要な操作(例:パスワード変更、送金など)が行われる可能性があります。
CSRFの具体的な使い方
CSRF対策の基本設定
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
この例は、Ruby on RailsでのCSRF対策の基本的な設定です。ApplicationControllerに`protect_from_forgery`メソッドを記述することで、全てのフォーム送信時にCSRFトークンの検証が行われます。`:exception`オプションを指定することで、CSRFトークンが無効な場合に例外が発生します。これにより、正規のサイトからの要求であることを確認し、CSRF攻撃を防ぐことができます。
CSRFトークンの追加と確認
# app/views/users/new.html.erb
<%= form_for @user do |f| %>
<%= f.label :name, '名前' %>
<%= f.text_field :name %>
<%= f.submit '登録' %>
<% end %>
<script>
console.log('CSRFトークン:', document.querySelector('meta[name="csrf-token"]').content);
</script>
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
if verify_authenticity_token
# ユーザー作成の処理
redirect_to root_path, notice: 'ユーザーが作成されました'
else
render :new, status: :unprocessable_entity
end
end
end
この例では、フォームにCSRFトークンが自動的に追加される様子を示しています。また、JavaScriptを使用してCSRFトークンの値をコンソールに出力しています。コントローラーでは`verify_authenticity_token`メソッドを使用して、CSRFトークンの検証を明示的に行っています。これにより、CSRF攻撃からアプリケーションを保護し、安全なフォーム送信を実現しています。
CSRFに関するよくある質問
CSRFが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのCSRFやDigest、sanitize、OpenSSL、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Rubyを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!