⑧Web開発

Webセキュリティの基礎【XSS・CSRF・SQLインジェクション対策】

⑧Web開発
記事内に広告が含まれています。

Webアプリケーションを公開する前に知っておくべきセキュリティの基礎知識を解説します。代表的な脆弱性と対策を理解しましょう。

代表的なWeb脆弱性と対策

脆弱性内容対策
SQLインジェクション悪意あるSQLをフォームから入力しDBを不正操作するプレースホルダー・ORMを使う。文字列結合でSQLを作らない
XSS(クロスサイトスクリプティング)悪意あるJSをWebページに埋め込んでユーザーを攻撃するHTMLエスケープを行う。Content-Security-Policyヘッダーを設定する
CSRF(クロスサイトリクエストフォージェリ)ユーザーを騙して意図しないリクエストを送らせるCSRFトークンを使う。SameSite Cookie属性を設定する
認証情報の漏洩パスワードや秘密鍵がコードやログに残る環境変数で管理する。bcryptでハッシュ化する
不適切なエラーメッセージスタックトレースなど内部情報をエラー画面に表示する本番ではDEBUG=Falseにする。エラーはログに記録する

HTTPセキュリティヘッダー

# Nginxでセキュリティヘッダーを追加
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy strict-origin-when-cross-origin;
add_header Content-Security-Policy "default-src 'self'";

まとめ

  • SQLインジェクション対策:プレースホルダーやORMを使い文字列結合でSQLを作らない
  • XSS対策:ユーザー入力を必ずエスケープしてHTMLに出力する
  • 認証情報は環境変数で管理しGitにコミットしない
  • 本番環境ではDEBUGモードをオフにしてスタックトレースを表示しない

コメント

タイトルとURLをコピーしました