我需要一个我正在处理的项目的过滤功能。我正在考虑使用HTML净化器。但是我关心它的表现。
你们有没有人使用或使用HTML净化器。或者您是否建议使用具有类似功能的其他库或类。
最重要的问题是:
如果你想 :
然后我会说HTMLPurifier是适合这项工作的工具。
我已经使用了几次 - 而且我从来没有听说过另一种可以很好地完成这种工作的工具。
作为关于性能的旁注:当然,当用户输入HTML时,您正在验证/过滤HTML?
我的意思是 :
每次输出一些HTML数据时都不使用HTMLPurifier,对吗?这对于表演来说太糟糕了^^
哦,还有:你是否尝试为HTMLPurifier激活一些缓存?
请参阅文档中的the Cache section。
如果您正在寻找变量的验证以及过滤器选项,请使用下面的库。
# Note that filters and validators are separate rule sets and method calls. There is a good reason for this.
require "gump.class.php";
$gump = new GUMP();
$_POST = $gump->sanitize($_POST); // You don't have to sanitize, but it's safest to do so.
$gump->validation_rules(array(
'username' => 'required|alpha_numeric|max_len,100|min_len,6',
'password' => 'required|max_len,100|min_len,6',
'email' => 'required|valid_email',
'gender' => 'required|exact_len,1|contains,m f',
'credit_card' => 'required|valid_cc'
));
$gump->filter_rules(array(
'username' => 'trim|sanitize_string',
'password' => 'trim',
'email' => 'trim|sanitize_email',
'gender' => 'trim',
'bio' => 'noise_words'
));
$validated_data = $gump->run($_POST);
if($validated_data === false) {
echo $gump->get_readable_errors(true);
} else {
print_r($validated_data); // validation successful
}
关于跨站点脚本(XSS) - 许多框架以各种方式帮助处理这个问题。当您自己滚动或者有一些XSS问题时,我们可以利用filter_input_array(在PHP 5> = 5.2.0,PHP 7中可用)。我通常会将此片段添加到我的SessionController中,因为所有调用都会在任何其他控制器之前通过与数据交互。以这种方式,所有用户输入在1个中心位置被消毒。如果这是在项目开始时或数据库中毒之前完成的,那么在输出时你不应该有任何问题...停止垃圾进入,垃圾进出。
/* Prevent XSS input */
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
/* I prefer not to use $_REQUEST...but for those who do: */
$_REQUEST = (array)$_POST + (array)$_GET + (array)$_REQUEST;