Hello there, ('ω')ノ
そもそもAPI通信とは?
API(Application Programming Interface)は、 「サービス同士が裏でやりとりする通路」のこと。
例:
- 勤怠アプリ → 社内データベースに打刻データを送信
- 経費システム → 金額や申請情報をやりとり
ブラウザ上はボタン一つですが、裏ではAPIが働いています。
なぜAPI通信を見るのか?
- 目に見えないからこそチェックされにくい
- 開発者がデバッグ用データをそのまま残している場合がある
- 認証なしで誰でもアクセスできるエンドポイントが存在することも
これらがそのまま放置されると、大量の個人情報流出やシステム操作リスクにつながります。
観察方法:誰でもできる簡単手順
① ChromeまたはEdgeの開発者ツールを開く(F12)
②「Network」タブを選択
③ 社内システムを通常操作しながら観察
④「XHR」「Fetch」「API」と表示される通信をチェック
見つけるべきポイント一覧
✅ 認証なしでアクセスできるURLがないか?
「ログイン前でもこのURLにアクセスできるか?」を試す
✅ 不要なデータまで返していないか?
例:社員一覧APIを見たら、以下が含まれていた
- 氏名
- メールアドレス
- 社員番号
- パスワードのハッシュ値(あり得ない!)
✅ ページに表示されない情報まで取得されていないか?
- 画面上は「社員名」だけ表示
- しかしAPIレスポンスを開いたら給与情報まで含まれているケースも
✅ HTTPステータスコードの異常なパターン
- 200 OK なのに画面はエラー表示 → 本当はアクセスできてしまっている場合がある
さらに踏み込んだ確認方法:
プロキシツール(Burp SuiteやOWASP ZAP)を使うと:
- 本番環境以外でリクエストを書き換えて再送信
- パラメーターを変えてみる(ID=1 → ID=2)
例:
- https://intra.example.co.jp/api/profile?id=1
- → id=2 に変えて、他人の情報が見えてしまわないか?(IDOR確認)
社内向けまとめチェックリスト
- [ ] APIエンドポイントURL一覧を洗い出す
- [ ] 認証なしアクセスが可能か確認
- [ ] 表示に不要なデータまで返していないか
- [ ] ID番号などを変えて不正アクセスできないか
- [ ] ステータスコードやエラーメッセージが適切か
Best regards, (^^ゞ