check_plain() は、ユーザーがブラウザに入力したテキストを再表示するのに十分ですか、それとも filter_xss() でフィルタリングする必要がありますか?
問題はcheck_plain(filter_xss($string))
またはfilter_xss(check_plain($string))
の使用に関するものだと思います。
check_plain()
とfilter_xss()
には2つの異なる目的がありますが、対照的に、次の目的があります。
check_plain()
は、HTMLとして表示されるプレーンテキスト文字列に特殊文字をエンコードします。filter_xss()
は、HTML文字列をフィルタリングして、クロスサイトスクリプティング(XSS)の脆弱性を防ぎます。特に、その目的は次のとおりです。
check_plain()
を使用する場合、関数に渡される文字列はプレーンテキストとして使用されることになっています。そのような場合、filter_xss()
は不要です。 filter_xss()
を使用する場合、関数に渡される文字列はHTMLであると想定され、check_plain()
は不要です。
質問が同じ文字列の異なる部分でcheck_plain()
とfilter_xss()
を使用することに関するものである場合、彼のコメントでgregglesが指摘したように、(たとえば)check_plain()
を使用できます。タグ属性の内容、およびHTMLタグ全体のfilter_xss()
。