2011-02-27 29 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