Я новичок в защите xss, и это заставило меня задуматься, безопасно ли это.
Если я использую, например:
$lol = "javascript:alert('asd')";
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$config->set('HTML.Allowed', '');
$cleaned = $purifier->purify($lol);
<a href="<?php echo $cleaned; ?>"><?php echo $cleaned; ?></a>
Приведенный выше код по-прежнему будет выводить функцию предупреждения, например, если я нажму ссылку, появится всплывающее окно.
Это безопасно, учитывая XSS?
Также я использую $config->set('HTML.Allowed', '');
, так как я хочу выводить ТОЛЬКО текст, а не HTML вообще.
Должен ли я затем добавить регулярное выражение для проверки ;:
, например, [^:;]
, на всякий случай.
Стоит отметить, что все данные, которые пользователи отправляют на мой сайт, будут выводиться только между тегами <p>
и тегами <h1>
.
Заранее спасибо,
// Новичок в XSS.
<a href="javascript:alert('asd')">javascript:alert('asd')</a>
в HTML Purifier, он бы делал то, что вы хотите, потому что в этот момент он знает, что должен рассматриватьjavascript:alert('asd')
как ссылку. Но, как сказал Пез, это, вероятно, излишество для того, чего вы хотите достичь. :) - person pinkgothic   schedule 13.01.2014