0

我想在文本框上使用基于 PHP 的工具 HTML Purifier来防止 xss,但我想允许以下内容:

  1. 基本标签,如<b>, <i>,<u>
  2. 链接
  3. 图片

我想阻止所有 CSS 和 JavaScript。我刚刚尝试了 HTML Purifier,但在这种情况下失败了。看看这个例子。我该如何处理?

此外,我希望表单的所有单词都#abcd@abcd自定义 html 替换(正如您所猜到的那样,它是一个链接)。这有可能还是我必须自己更换?

4

3 回答 3

4

将 HTML.Allowed 设置为类似b,i,u,a[href],img[src|alt]

这里

于 2011-02-27T14:00:35.600 回答
-2

正则表达式和 e 修饰符

功能检查标签($标签){
  $tag = removeslashes( $tag );

  ...

  返回 $secureTag;
}

$html = preg_replace("/<[^>]+>/e", "checkTag('\$0')", $input);

于 2011-02-27T10:41:26.277 回答
-2

PHP 有一个内置函数,它似乎完全可以满足您的需求。

http://php.net/manual/en/function.strip-tags.php

它甚至具有白名单功能,因此它可以允许一些标签。

对于 the#abcd@abcd部分,我认为您将不得不为此使用 a preg_replace()。我使用了一个类似的功能,它@abcd很好地完成了这部分:)。

$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText);
于 2011-02-27T10:41:40.800 回答