check_plain()で十分ですか?


回答:


26

私は質問を使用してについてです想像しcheck_plain(filter_xss($string))、かfilter_xss(check_plain($string))

check_plain()そしてfilter_xss()二つの異なる、とは対照的に、目的を持っています:

  • check_plain() HTMLとして表示されるプレーンテキスト文字列の特殊文字をエンコードします。
  • filter_xss()HTML文字列をフィルタリングして、クロスサイトスクリプティング(XSS)の脆弱性を防ぎます。特にその目的は次のとおりです。

    • ブラウザをtrickす可能性のある文字や構成要素を削除する
    • すべてのHTMLエンティティが整形式であることを確認する
    • すべてのHTMLタグと属性が整形式であることを確認する
    • HTMLタグに許可されていないプロトコル(javascript:など)のURLが含まれていないことを確認する

を使用する場合check_plain()、関数に渡される文字列はプレーンテキストとして使用されることになっています。そのような場合、filter_xss()必要ありません。を使用する場合filter_xss()、関数に渡される文字列はHTMLであると想定されており、check_plain()必要ありません。

質問が使用する方法についての場合check_plain()filter_xss()同じ文字列の異なる部分にgregglesが彼のコメントで指摘したように、あなたは(たとえば)を使用することができcheck_plain()、タグの属性の内容に、そしてfilter_xss()全体のHTMLタグに。


5
filter_xssは、html全体で使用することを意図しています。html属性でfilter_xssを使用すると、適切にフィルタリングされません。check_plainを使用して、html属性を安全にフィルタリングできます。これらの機能の使用の詳細については、drupalscout.com / knowledge -base / およびdrupalscout.com/knowledge-base/…も参照してください。
グレグル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.