
Rails のセキュリティ
CSRF 保護、SQL インジェクション、XSS、mass assignment、secrets の管理、HTTPS
22 面接問題·
Senior
1Rails が CSRF 攻撃から保護するためにデフォルトで使用する仕組みは何ですか?
1
Rails が CSRF 攻撃から保護するためにデフォルトで使用する仕組みは何ですか?
回答
Rails はセッションごとに一意の CSRF トークンを生成し、hidden フィールドを通じてフォームに自動的に含めます。このトークンは GET 以外のすべてのリクエストでサーバー側で検証されます。form_with ヘルパーがこのトークンを自動的に挿入し、protect_from_forgery は ApplicationController でデフォルトで有効になっています。
2API controllerの特定のactionでCSRF保護を無効にするにはどうすればよいですか?
2
API controllerの特定のactionでCSRF保護を無効にするにはどうすればよいですか?
回答
skip_before_action :verify_authenticity_token メソッドは特定のactionでCSRF検証を無効にします。これはsessionではなくtokenベースの認証(JWT、API key)を使用するAPIで一般的です。only オプションを使って、この例外を厳密に必要なactionのみに限定することが推奨されます。
3このコードで悪用される脆弱性は何ですか:User.where("name = '#{params[:name]}'")?
3
このコードで悪用される脆弱性は何ですか:User.where("name = '#{params[:name]}'")?
回答
SQLクエリにparamsを直接展開するとSQL injectionが可能になります。攻撃者は name="'; DROP TABLE users; --" を送信して任意のSQLコードを実行できます。代わりにActiveRecordのplaceholderを使用してください:User.where(name: params[:name]) または User.where("name = ?", params[:name])。
4
SQL injectionから自動的に保護するActiveRecordのメソッドはどれですか?
5
Rails は ERB ビューにおいて XSS 攻撃からどのように自動的に保護しますか?
+19 面接問題
その他のRuby on Rails面接トピック
Rubyの基礎
Junior
25問Rubyのオブジェクト指向プログラミング
Junior
20問Rails の基礎
Junior
18問Routing & Controllers
Junior
22問ActiveRecord の基礎
Junior
25問Views と ERB テンプレート
Junior
20問ActiveRecord の関連付け
Mid-Level
24問高度なActiveRecordクエリ
Mid-Level
28問Rails フォーム
Mid-Level
20問認証と認可
Mid-Level
22問モダンな Asset Pipeline とフロントエンド
Mid-Level
18問Rails APIモード
Mid-Level
20問RSpecによるテスト
Mid-Level
24問ActiveJob & Background Jobs
Mid-Level
20問ActionCable & WebSockets
Mid-Level
18問ActionMailer
Mid-Level
18問ActiveStorage
Mid-Level
20問キャッシュ戦略
Mid-Level
20問高度なマイグレーション
Mid-Level
20問Rails Engines とモジュラーアプリ
Senior
18問パフォーマンス最適化
Senior
26問Rails のデザインパターン
Senior
22問Rubyのメタプログラミング
Senior
20問Rails での GraphQL
Senior
20問デプロイと本番環境
Senior
20問Monitoring & Logging
Senior
20問Rails アップグレード戦略
Senior
18問