【Chrome】PHPでデバッグ中に『このページで通常と異なるコードを検出したため、個人情報・・・』が表示された。回避?

phpでhtmlソースを解析するようなツールを作成していると、Chromeで下記文言が表示されました。ページは表示されずエラー画面になります。

このページで通常と異なるコードを検出したため、個人情報(例: パスワード、電話番号、クレジット カード番号)を保護するために、ページをブロックしました。

最初はphpの構文エラーか何かだと思い込んで間違っていそうな箇所を探していましたが、エラー画面を見直してみると、構文エラーではなく、セキュリティ的にブロックされたような感じです。

保護するために、ページをブロックしました
引用:Chrome

このエラーは初めて見ましたので、少し調べてみましたので、メモしておきます。

解決はできていません

どういったときに発生するかの調査は細かく行いましたが、結論としては、「ブラウザはIEまたはFirefoxを使ってください」という仕様的な回避方法です。

実際の解決には至っておりませんので、ご希望に添えない場合があります。ご了承くださいm(__)m

 

スポンサーリンク

エラーが発生した操作

フォームで「<div onclick=””></div>」というテキストを送信します(POST送信)。
更に送信されてきた値をphpの var_dump または echo によって画面表示しようとすると、「このページは動作しません・・・」というエラーになります。

保護するために、ページをブロックしました
引用:Chrome

エラー発生パターンの調査

いくつかのパターンを調べてみました。

フォームで送信しない場合

フォーム送信ではなく「そのままhtmlを記述する」もしくは「PHPで書き出す」場合をチェックしてみます。

  1. 「<div onclick=””></div>」をhtmlとして記載し画面に表示⇒正常
  2. 「<div onclick=””></div>」を var_dump または echo によって画面に表示⇒正常

フォーム送信ありの場合

次に、フォームの送信ボタンをクリックし、送信した場合をチェックしてみます。

  1. 「<div onclick=””></div>」を送信するが、画面に表示しない⇒正常
  2. 「<div onclick=””></div>」を送信し、受け取った値($_POST)から「<div onclick=””></div>」の部分を除外し、画面に表示⇒正常
  3. 「<div onclick=””></div>」を送信し、受け取った値($_POST)を var_dump または echo によって画面に表示⇒エラー
    ※onclick以外にもonBlur / onFocus / onChange / onSelect / onSelectStart / onSubmit / onReset / onAbort / onError / onLoad / onUnload / onClick / onDblClick / onKeyUp / onKeyDown / onKeyPress / onMouseOut / onMouseOver / onMouseUp / onMouseDown / onMouseMove / onDragDrop も同様にエラーになります

    // 下記どちらでもエラーになります
    var_dump($_POST['xxx']);
    echo $_POST['xxx'];
  4. 「<div onclick=””></div>」を送信し、受け取った値($_POST)は使用せず、 var_dump または echo によって「<div onBlur=””></div>」を画面に表示⇒正常
    // $_POSTを表示するのではなく、「<div onBlur=""></div>」を直接書きます
    var_dump('<div onBlur=""></div>');
    echo '<div onBlur=""></div>';
  5. 「<div onclick=””></div>」を送信し、 var_dump または echo によって「<div onclick=””></div>」を画面に表示⇒エラー
    // $_POSTを表示するのではなく、「<div onclick=""></div>」を直接書きます
    var_dump('<div onclick=""></div>');
    echo '<div onclick=""></div>';

調べた結果

フォームを送信していない場合は問題なし。

フォームを送信した場合は、javascriptのイベント処理を含むタグをフォームで送信し、「受け取った値をそのまま表示する」もしくは「直接 var_dump または echo で表示する」のどちらの場合でもエラー画面になってしまう。

エラー画面が表示され少し驚きましたが、悪さをする可能性があるpost送信に関しては、画面表示させないというセキュリティ対策なのかなと思います。

回避策

IE、Firefoxなどでは起きない現象です。よって、ツールの使用条件をその2つのブラウザに絞り込んでしまう方法が一番良さそうです。

ちなみに、僕の場合は、自分だけが確認するので、上記の方法で回避しようと思います。

セキュリティ系のエラーなので回避するのは少し難しいかもしれないですね。うまく仕様でカバーしてみてはいかがでしょうか?

それでは、最後までお読みいただきありがとうございました!

スポンサーリンク