web-dev-qa-db-ja.com

Strip_tagsとwp_filter_nohtml_ksesの違いは何ですか?

strip_tagswp_filter_nohtml_kses の違いは何ですか。私はソースからwp_filter_nohtml_ksesを理解しようとしました、しかしそれはそれがコーデックスが言うことであってもそれがすべてのhtmlを取り除くより少し複雑な何かをするように見えます。私はkses関数が高価であると思うので、それがするすべてがhtmlを取り除くことであるならなぜstrip_tagsを使わないのか疑問に思います。

3
byronyasgur

技術的な違いはちょっと明白です。 PHP oneは単一関数で、PHPコード内のロジックを使用します。 WP oneは、サードパーティのKSESライブラリに基づく一連の関数の1つです。

これら2つの機能の間に実際的な違いはありますか?重要な点は、strip_tags()ユーティリティのために作られたのに対し、KSESはセキュリティのために作られたということです。

そのため、ほとんどの場合結果は近いかもしれませんが、KSESの実装は遅く、より徹底的になります


HTML PurifierサイトでのHTMLフィルタの比較 に遭遇しました。以下はstrip_tags()kses(オリジナルのWP以外のバージョン)の要約の抜粋です(両方に詳細があります)。 :

+------------+------------+---------+-------------+---------+------------+--------------------------+
|  Library   | Whitelist  | Removal | Well-formed | Nesting | Attributes | XSS safe | Standards safe |
+------------+------------+---------+-------------+---------+------------+----------+----------------+
| strip_tags | Yes (user) | Buggy   | No          | No      | No         | No       | No             |
| kses       | Yes (user) | Yes     | No          | No      | Partial    | Probably | No             |
+------------+------------+---------+-------------+---------+------------+----------+----------------+
4
Rarst