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モードをオフにしてスタックトレースを表示しない



コメント