概要

PHPのWebアプリ開発者は、フロントエンド側でWebアプリのデバッグをしたいという人が多いようです。

具体的にいうと下記はCakePHPのWebデバッグ機能であるDebugKitの実行例です。

CakePHP

こういったWebデバッグ機能を有名所のフレームワークは自前で備えています。

Webデバッグ機能は開発環境ではとても便利ですが、本番環境では絶対に有効化していはいけません。

本番環境で有効化していると、以下のようなリスクがあります。

  • 機微情報(ID. PWなど)が第三者に閲覧されてしまう
  • 実行したSQLが第三者に閲覧されてしまう
  • アクセスログが第三者に閲覧されてしまう
  • その他Webアプリ、Webサーバーの設定が第三者に閲覧されてしまう

本番環境でWebデバッグ機能を有効にするやつなんているか?そう思われたあなた。これが結構いるのです。日本国内の事例に限っても軽く100件以上を私は見つけました。

実際にどのような事例があったのか、簡単に紹介しましょう。

CakePHPの例

Facebook関連のキーやDBの資格情報が丸見え。

Imgur

実行したSQLクエリが丸見え。

Imgur

CodeIgniterの例

SMTPの資格情報が丸見え。

Imgur

FuelPHPの例

DBの資格情報が丸見え。

Imgur

プライバシーマークとは・・・。

Imgur

Symphonyの例

アクセスログが丸見え。

Imgur

PHP Debug Barの例

実行したSQLクエリが丸見え。

Imgur

まとめ

この件についてtweetしていたところ、CakePHPのCore DeveloperであるJose Diaz-Gonzalez(@savant)からリプライをもらいました。

そうです。単純に本番環境(production mode)でWebデバッグ機能を有効にしなければいいだけなのです。注意しましょう。

また、Webアプリのデプロイ後にWebデバッグ機能が有効になっていないか確認するのもいいかもしれません。

CakePHPの場合、以下のような#debug-kit-toolbarの要素がないか確認してみれば、Webデバッグ機能が有効になっているかどうか判断することができます。

<div id="debug-kit-toolbar">
// 省略
</div>

備考

Note: 今回自分が発見したものについては、適時しかるべきところに報告をしているところです。🙏