我正在为我正在进行的项目提供过滤功能。 我正在考虑使用HTML净化器。但是我担心它的表现。
你们有没有人使用或使用HTML净化器。或者您是否建议使用具有类似功能的其他库或类。
最重要的问题是:
答案 0 :(得分:2)
如果你想:
然后我会说HTMLPurifier是适合这项工作的工具。
我已经使用了几次 - 而且我从来没有听说过其他可以很好地完成这类工作的工具。
作为关于表演的旁注:当然,当用户输入HTML时,你是在验证/过滤HTML吗?
我的意思是:
每次输出一些HTML数据时都不使用HTMLPurifier,对吗? 这对表演来说太糟糕了^^
哦,还有:您是否尝试为HTMLPurifier激活一些缓存?
请参阅文档中的the Cache section。
答案 1 :(得分:0)
如果您正在寻找变量的验证以及过滤器选项,请使用下面的库。
# 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
}
答案 2 :(得分:0)
关于跨站点脚本(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;