PHP过滤器库或类

问题描述 投票:1回答:3

我需要一个我正在处理的项目的过滤功能。我正在考虑使用HTML净化器。但是我关心它的表现。

你们有没有人使用或使用HTML净化器。或者您是否建议使用具有类似功能的其他库或类。

最重要的问题是:

  • utf-8支持
  • xss安全
php html xss validation
3个回答
2
投票

如果你想 :

  • 确保只允许您指定的HTML标记和属性
  • 并确保您获得一些有效的HTML作为输出,

然后我会说HTMLPurifier是适合这项工作的工具。

我已经使用了几次 - 而且我从来没有听说过另一种可以很好地完成这种工作的工具。

作为关于性能的旁注:当然,当用户输入HTML时,您正在验证/过滤HTML?

我的意思是 :

  • 一些HTML由用户输入
  • 您可以使用HTMLPurifier验证/过滤/清除它
  • 并将干净的HTML存储到数据库中

每次输出一些HTML数据时都不使用HTMLPurifier,对吗?这对于表演来说太糟糕了^^

哦,还有:你是否尝试为HTMLPurifier激活一些缓存?

请参阅文档中的the Cache section


0
投票

如果您正在寻找变量的验证以及过滤器选项,请使用下面的库。

https://github.com/Wixel/GUMP

# 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
}

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;

http://php.net/manual/en/function.filter-input-array.php

© www.soinside.com 2019 - 2024. All rights reserved.