PHP фильтр библиотека или класс - PullRequest
1 голос
/ 03 марта 2010

Мне нужна функция фильтра для проекта, над которым я работаю. Я думаю об использовании HTML-очистителя. Однако меня это беспокоит производительность.

Кто-нибудь из вас, ребята, использовал или использует очиститель HTML. Или вы предлагаете другую библиотеку или класс с аналогичной функциональностью.

Наиболее важные вопросы:

  • поддержка utf-8
  • xss security

Ответы [ 3 ]

2 голосов
/ 03 марта 2010

Если вы хотите:

  • Убедитесь, что разрешены только указанные вами теги и атрибуты HTML
  • И убедитесь, что в качестве выходных данных вы получите правильный HTML,

Тогда я бы сказал, что HTMLPurifier - это правильный инструмент для работы.

Я использовал его пару раз - и никогда не слышал о другом инструменте, который бы хорошо справлялся с подобными вещами.


Как примечание о производительности: вы проверяете / фильтруете HTML, когда он набирается пользователем, конечно?

Я имел в виду:

  • Некоторый HTML вводится пользователем
  • Вы проверяете / фильтруете / очищаете его с помощью HTMLPurifier
  • И вы храните этот чистый HTML в базе данных

И вы не используете HTMLPurifier каждый раз, когда выводятся некоторые данные HTML, не так ли? Это было бы ужасно для выступлений ^^


Да, также: вы пытались активировать кеш для HTMLPurifier?

См. Раздел кэша , в документации.

0 голосов
/ 17 декабря 2017

Относительно межсайтового скриптинга (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

0 голосов
/ 08 декабря 2017

Если вы ищете для проверки, а также параметры фильтра для переменных, перейдите с помощью библиотеки ниже.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...