2011-02-27 33 views
0

我想用PHP-based tool HTML Purifier上的文本框,以防止XSS,但我想,以允许以下:最佳设置净化

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

我想阻止所有CSS和JavaScript。我刚刚尝试过HTML Purifier,但在这种情况下失败了。只要看到this example。我该如何照顾这件事?

另外我想形式#abcd@abcd与自定义HTML 替代(你也能猜到它的链接)的所有单词。这是可能的,还是我必须做我自己的替换?

+0

定义“失败”。在'<'之后吞下所有东西并不是很好,但它不是一个安全问题,要么是 – 2011-02-27 10:33:44

+0

,而是像是假阳性 – aWebDeveloper 2011-02-27 10:35:11

+0

,但是为什么,它到底有什么问题呢?这怎么可以用来将恶意内容走私到你的网站? – 2011-02-27 10:37:56

回答

-2

正则表达式和e修饰符

 

function checkTag($tag) { 
    $tag = removeslashes($tag); 

    ... 

    return $secureTag; 
} 

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

+1

我询问了有关html净化器的最佳设置 – aWebDeveloper 2011-02-27 10:47:58

-2

PHP有一个内置的功能,似乎做的正是你想要的。

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

它甚至有一个白名单功能,因此它可以让一些标签。

对于#abcd@abcd部分,我认为你将不得不使用preg_replace()。我已经使用了类似的功能,它的功能非常好:)。

$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText); 
+1

允许的标记有点不安全 - 因为攻击者可以放置onclick,ommouseover参数 – SergeS 2011-02-27 10:43:43

+0

单独的strip_tags对XSS ,但是。 – 2011-02-27 10:43:53

+1

我问了有关html净化器的最佳设置 – aWebDeveloper 2011-02-27 10:47:34

4

设置HTML.Allowed喜欢的东西b,i,u,a[href],img[src|alt]

here

+0

请扩展URL缩短的链接。 – 2011-07-25 16:51:47