
セキュリティを知らないエンジニアは「危険」
セキュリティを知らないエンジニアは「危険」
プログラミングを
セキュリティの
3大脆弱性を理解する
Webアプリケーションで
1. XSS(クロスサイトスクリプティング)
どんな攻撃か
攻撃者が悪意のある
たとえば、<script>悪意のあるコード</script>と投稿すると、
被害の例
- ユーザーの
Cookie (セッション情報)が 盗まれ、 アカウントが 乗っ取られる - フィッシングサイトへリダイレクトされる
- ページの
内容が 改ざんされる
対策
- ユーザー入力を
必ずエスケープする — HTMLの特殊文字( <、>、&、")を無害化する - Reactや
Vueなどの — デフォルトでフレームワークを 使う エスケープ処理が 行われる dangerouslySetInnerHTML(React)は極力使わない — 使う場合は サニタイズ処理を 必ず 行う - Content Security Policy
(CSP)を — 信頼できる設定する ソースからの スクリプトのみ 実行を 許可する
2. CSRF(クロスサイトリクエストフォージェリ)
どんな攻撃か
ユーザーが
たとえば、
対策
- CSRFトークンを
使用する — リクエストごとに一意の トークンを 生成し、 正規の リクエストかを 検証する - SameSite Cookie属性を
設定する — クロスサイトからのリクエストに Cookieを 送信しない - 重要な
操作には — パスワード変更や再認証を 求める 送金時に、 再度パスワードを 入力させる
3. SQLインジェクション
どんな攻撃か
ユーザー入力を
たとえば、
対策
- プリペアドステートメント
(パラメータバインディング)を — ユーザー入力を使う SQL文の 一部として ではなく、 値として 扱う - ORMを
使う — TypeORM、Prismaなどのフレームワークは、SQLインジェクション対策が 組み込まれて いる - 入力値の
バリデーション — メールアドレス形式、数値範囲などを 事前に チェックする
セキュリティも
その他知っておくべきセキュリティ対策
認証・認可
| 項目 | 説明 |
|---|---|
| パスワードの | パスワードを |
| JWTの | トークンの |
| 最小権限の | ユーザーに |
通信の保護
- HTTPS通信の
強制 — HTTP通信は盗聴される 可能性がある - CORS設定 — 許可する
オリジン (ドメイン)を 明示的に 指定する - セキュリティヘッダーの
設定 —X-Frame-Options、X-Content-Type-Optionsなどを設定する
データの保護
- 環境変数に
シークレット情報を — APIキーや保存する パスワードを ソースコードに 直接書かない .envファイルを.gitignoreに含める — 誤ってGitHubに 公開しない - 個人情報の
取り扱い — 必要最小限のデータのみ 収集し、 適切に 暗号化する
セキュリティは「後から」では遅い
セキュリティ対策は、
ゆめさくエンジニアの
API設計の
フロントと
エラーハンドリングの
本番環境で
現場で
スクールでは
ゆめさくエンジニアの
18ヶ月で




