我想在文本框中使用PHP-based tool HTML Purifier来阻止xss,但我想允许以下内容:
<b>
,<i>
,<u>
我想阻止所有CSS和JavaScript。我刚刚尝试过HTML Purifier,但在这种情况下失败了。只需看this example。我怎么处理这个?
另外,我希望将#abcd
和@abcd
形式的所有单词替换为自定义html (因为您会猜到它是链接)。这有可能还是我必须自己更换?
答案 0 :(得分:4)
将HTML.Allow设置为类似b,i,u,a[href],img[src|alt]
请参阅here。
答案 1 :(得分:-2)
正则表达式和e修饰符
function checkTag( $tag ) { $tag = removeslashes( $tag ); ... return $secureTag; } $html = preg_replace( "/<[^>]+>/e", " checkTag( '\$0' )", $input );
答案 2 :(得分:-2)
PHP有一个内置函数,似乎完全符合你的要求。
http://php.net/manual/en/function.strip-tags.php
它甚至具有白名单功能,因此可以允许某些标签。
对于#abcd
和@abcd
部分,我认为您必须使用preg_replace()
。我使用了类似的函数,它很好地完成了@abcd
部分:)。
$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText);