Hello there, ('ω')ノ
セキュリティ・バイ・オブスキュリティとは?
機能やデータを「URLを分かりにくくする」「目立たなくする」ことで隠す方法です。
しかし、これは正しいアクセス制御とは言えません。
具体例:予測しにくいURLで管理者機能を隠すケース
例
アプリケーションの管理者機能が次のようなURLにあります:
https://insecure-website.com/administrator-panel-yb556
確かにランダムな文字列が含まれていて、予測は難しいです。
なぜこれが危険なのか?
- ユーザーにURLが漏れる場合がある
- JavaScript内にURLが埋め込まれていることがある
実例コード
<script> var isAdmin = false; if (isAdmin) { var adminPanelTag = document.createElement('a'); adminPanelTag.setAttribute('href', 'https://insecure-website.com/administrator-panel-yb556'); adminPanelTag.innerText = 'Admin panel'; } </script>
このコードは、管理者ではないユーザーでもブラウザ開発者ツールで見れば確認できてしまいます。
見つけ方と診断手順
1. JavaScriptソースコードを確認
- ブラウザの開発者ツール → ソースタブ
スクリプトを確認し、
hrefやURLが含まれる部分を探します。
2. robots.txt や sitemap.xml も確認
- URLが他の場所にも記載されていないかチェック。
3. ファイル名やディレクトリ名の推測
- 他にも
adminやpanelという単語を含むURLを試す。
まとめ:セキュリティ設計のポイント
- URLを隠すだけではダメ! 必ずサーバー側で権限チェックを行う。
- フロントエンドのコードに注意! JavaScriptやHTML内に機密情報が含まれていないか確認する。
- 脆弱性診断時はソースコード全体をチェックすることが重要
この考え方を押さえることで、より堅牢なWEBアプリケーションセキュリティを実現できます!
Best regards, (^^ゞ