質問: php:7.1.1 Apache/2.4.25 (Win32) cakephp:3.2.11 MySQL:10.1.21-MariaDB 現在、ちょっとした記事を投稿できるコミュニティサイトを作ろうとしています。 その際にセキュリティ対策でXSS対策をしようと考えています。 調べると下記の方法がありました。 1全てのecho部分に「htmlspecialchars()メソッド」略して「h()」を追記してサニタイズ処理をする。 2ビューへの出力時のset関数にサニタイズ処理をを加える。 自分自身、初学者なものでして、1をやるしかないのか悩んでいるのですが、より良い提案等ありましたら ご教授頂きたく、よろしくお願いいたします。
回答: データのエスケープは、**出力の直前に**行うのが鉄則です。ということで、「データの時点で変換をかけておく」のは文字化けなど別なトラブルの原因ともなりますので、基本的に適当ではありません。 1のように都度エスケープが面倒なら、ビュー部分ではPHPを直接書かず、SmartyやTwigなどのテンプレートエンジンを使うのも1つの方法です。