Html净化的最佳设置

时间:2011-02-27 10:32:15

标签: php html htmlpurifier

我想在文本框中使用PHP-based tool HTML Purifier来阻止xss,但我想允许以下内容:

  1. <b><i><u>
  2. 等基本标签
  3. 链接
  4. 图像
  5. 我想阻止所有CSS和JavaScript。我刚刚尝试过HTML Purifier,但在这种情况下失败了。只需看this example。我怎么处理这个?

    另外,我希望将#abcd@abcd形式的所有单词替换为自定义html (因为您会猜到它是链接)。这有可能还是我必须自己更换?

3 个答案:

答案 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);