XSS（クロスサイトスクリプティング）の対応でhtmlspecialcharsを使ったら異なる現象が発生


現在XSS（クロスサイトスクリプティング）のテストを行っていて、  
PHPの対象箇所をhtmlspecialcharsの関数を用いて対応しています。

テスト用の値としてはalert(document.cookie)のスクリプトコード  
をURLパラメータにセットしてみて、Cookie情報がポップアップされないように  
修正を行っています。

しかしながら、あるHTMLファイル内にPHPで記述されたコードがあるのですが、  
htmlspecialchars関数を使ったら、添付画面のように、  
表示されてしまいます。  
ポップアップすることは直ったようですが、画面にこのような文字列が表示  
されるようになってしまいました。

何か思い当たる原因はないでしょうか？

試してみるべきことがあったら教えてください。

どうぞよろしくお願い致します。

![不具合の画面](https://i.stack.imgur.com/SxOPL.jpg)




`htmlspecialchars`か類似のエスケープ関数を2回実行しています。

元データ`'`→1回目のエスケープ`&quot;`→2回目のエスケープ`&amp;quot;`→(ブラウザ上での表示)`&quot;`

エスケープの原則は「値を利用するタイミングで行う」です。どこでエスケープをやっているか分からない状況になるとこのように二重エスケープになったりエスケープ漏れが生じます。




`htmlspecialchars`か類似のエスケープ関数を2回実行しています。

元データ`'`→1回目のエスケープ`&quot;`→2回目のエスケープ`&amp;quot;`→(ブラウザ上での表示)`&quot;`

エスケープの原則は「値を利用するタイミングで行う」です。どこでエスケープをやっているか分からない状況になるとこのように二重エスケープになったりエスケープ漏れが生じます。

