h() の脆弱性
h() 関数は内部で htmlspecialchars() 関数を呼んでいるのですが、デフォルトの引数で呼び出しているため、シングルクォーテーションがエスケープされないとのことです。
htmlspecialchars/htmlentitiesの正しい使い方
h() は CakePHP の随所で呼ばれているため、ソースコード( /cake/basics.php )を書き換えた方が良さそうです。
修正前
function h($text) {
if (is_array($text)) {
return array_map('h', $text);
}
return htmlspecialchars($text);
}修正後
function h($text) {
if (is_array($text)) {
return array_map('h', $text);
}
return htmlspecialchars($text, ENT_QUOTES);
}