2010-04-23 66 views
10

我將如何去除腳本標籤,以及它們內部使用PHP的內容?Strip <script>標籤和PHP之間的所有內容?

+3

我希望你沒有試圖用黑名單清理用戶輸入。你會錯過'onclick','onmouseover','href =「javascript:','src =」javascript:'等等。 – Quentin 2010-04-23 11:24:18

+0

你應該真的出席大衛提示,但回答你的問題,請看我的帖子。 – oezi 2010-04-23 11:26:54

+0

請問清楚你的需要 – Karthik 2010-04-23 11:27:33

回答

11

正如David所說,如果您想要清理傳入數據,僅篩選腳本標記是不夠的。 HTML Purifier承諾做完整的包:

HTML淨化器是一個用PHP 符合標準的HTML 過濾庫。它還將確保您的文檔符合標準 ,只有通過W3C的全面知識才能實現這些內容.HTML Purifier不僅可以刪除所有惡意的 代碼(更好的稱爲XSS),而且還可以確保您的文檔符合標準,只能通過 獲得全面的知識。規格。

8

按照Pekka的建議與HTML Purifier一起去。

決不正則表達式去那種情況下

下面是一個例子,正則表達式過濾器破碎,適用於瀏覽器(Firefox的測試)

<script script=">>><script></script><script>//" > 
/**/ 
alert(1); 
</script 
> 
-2

你可以做到這一點的功能用strip_tags

http://www.php.net/strip_tags

<?php 
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; 
echo strip_tags($text); 

// Allow <p> and <a> 
echo strip_tags($text, '<p><a>'); 
?> 
+7

不,他不能使用這個功能! 「之間的所有內容。 – 2013-11-06 08:53:04

1

我使用這個:

$tag_para_remover_codigo_fonte_url_dentro_buscador = array("head","script","style","object","embed","applet","noscript","noframes","noembed"); 

for ($i=0;$i<count($tag_para_remover_codigo_fonte_url_dentro_buscador);$i++) { 

    $codigo_fonte_url_dentro_buscador = preg_replace("/< *" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . "[^>]*>(.*?)<\/" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . " *>/i"," ",$codigo_fonte_url_dentro_buscador); 

} 

$codigo_fonte_url_dentro_buscador = html_entity_decode(strip_tags($codigo_fonte_url_dentro_buscador)); 
+2

我認爲這些變量名稱應該更長。 – xorinzor 2017-01-02 11:57:18

相關問題