🔐
【DAY67】セキュリティ強化から始めるWebアプリ改修
セキュリティ強化から始めるWebアプリ改修
過去にSpring Bootで開発していたWebアプリのコードを久しぶりに見直してみた。ローカル環境で立ち上げてみると、動作自体は問題なかったが、今の目線で見ると改善したい点が多い。その中でも特に気になったのが「セキュリティの甘さ」だった。
なぜ今セキュリティ強化なのか?
アプリが個人用でも、セキュリティを軽視すると以下のようなリスクが出てくる:
- 管理画面への不正アクセス
- パスワードの平文保存やハッシュの不適切な扱い
- CSRF / XSS / SQL Injectionといった典型的な脆弱性
- セッション管理の不備による乗っ取り
近年は、どんなに小さなシステムでもセキュリティリスクは無視できない。実際、開発したアプリを人に見せたりデモ用に使う場面が増えてきたこともあり、「今のうちにちゃんとした構成に直すべき」と感じた。
Spring Bootアプリの見直しポイント
Spring Securityを再導入し、以下の点に重点を置いて改修を進めている:
- 認証方式の強化:Form認証からJWTベース認証へ
-
パスワードのハッシュ化:
BCryptPasswordEncoderを採用 - ルートごとのアクセス制御:管理画面、APIなどを明確に分離
- CSRF対策の明示的な設定:トークン方式での保護を明記
-
セキュリティヘッダーの追加:
Content-Security-PolicyやX-Frame-Optionsの導入
特に、JWTを使ったトークンベース認証に切り替えることで、将来的にフロントエンドがReactやVueになっても柔軟に対応できるようになる。
Firebaseアプリにも同じ視点を
Firebaseを使ったアプリについても、セキュリティ設定の見直しを始めた。Firebase Authentication や Firestore ルールに頼りきりだったが、以下のような点をチェック:
- Firestoreのセキュリティルール の粒度(ユーザーごとの読み書き制限が正しく機能しているか)
- 匿名ユーザーの制限(一定の操作を許してしまっていないか)
- Cloud Functionsの認証チェック(署名付きリクエストのみを許可するなど)
Firebaseは便利だが、デフォルト設定のままでは危ないことも多い。開発が進むにつれ、無料枠だけで完結できる構成から、セキュリティ強化と運用を意識した構成へと移行していく必要がある。
今後やりたいこと
セキュリティは「一度整えたら終わり」ではなく、継続的なメンテナンスが必要。今後は以下の点も検討中:
- 定期的な脆弱性スキャン(OWASP ZAPなど)
- Google OAuthやLINEログインなど、ソーシャルログインの導入
- ログイン試行回数の制限や、2段階認証(2FA)の実装
セキュリティを強化することで、アプリの信頼性や保守性も大きく向上する。機能追加やUI改善の前に、まずは**「守るべきものを守る」**という意識を徹底していきたい。
Discussion