MENU

【2025年】開発者向けセキュリティ入門|最低限知るべき知識

security basics developer 2025 optimized

「セキュリティ、何から学べばいい?」と悩んでいませんか?

現役WEBエンジニアとして、セキュリティを意識した開発を行っています。

この記事では、開発者が最低限知るべきセキュリティ知識を解説します。

目次

OWASP Top 10

主要な脆弱性

脆弱性 概要
インジェクション SQL、コマンド注入
認証の不備 セッション管理ミス
XSS スクリプト挿入
CSRF リクエスト偽造

SQLインジェクション

危険な例

// ダメな例
const query = `SELECT * FROM users WHERE id = ${userId}`;

// 安全な例(プリペアドステートメント)
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);

対策

  • プリペアドステートメント使用
  • ORM活用
  • 入力値検証

XSS対策

種類

種類 説明
反射型 URLパラメータ経由
格納型 DBに保存される
DOM型 クライアント側で発生

対策

// エスケープ処理
function escapeHtml(str) {
  return str
    .replace(/&/g, '&')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;');
}
  • 出力時のエスケープ
  • CSPヘッダー設定
  • HTTPOnly Cookie

認証・認可

ベストプラクティス

  • パスワードハッシュ化(bcrypt)
  • セッション管理
  • JWT適切な運用
  • 多要素認証

パスワードハッシュ

const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(password, 10);
const isValid = await bcrypt.compare(input, hash);

HTTPS

必須の理由

  • 通信の暗号化
  • 改ざん防止
  • SEO評価

設定ポイント

  • SSL証明書導入
  • HTTP→HTTPSリダイレクト
  • HSTSヘッダー

依存パッケージ

脆弱性チェック

# npm
npm audit
npm audit fix

# yarn
yarn audit

定期更新

  • Dependabot活用
  • 定期的なアップデート
  • 脆弱性情報のチェック

環境変数管理

やるべきこと

# .envファイル
DATABASE_URL=xxx
API_KEY=xxx

# .gitignore
.env
.env.local
  • 秘密情報はコードに書かない
  • .envは.gitignoreに追加
  • 本番は環境変数で管理

まとめ

開発者セキュリティのポイント:

  1. OWASP Top 10を理解
  2. 入力検証・出力エスケープ
  3. 認証・認可を適切に
  4. 依存パッケージを管理

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次