2009-07-14 110 views
2

嗯。除了「defanging」輸入或使用某種正則表達式去除標籤之外,將用戶的東西轉儲到<textarea>有多安全?使用``<textarea>防止腳本

例如,假設有,做以下PHP頁面:

echo '<textarea>'; 
echo $_GET['whuh_you_say'] ; 
echo '</textarea>'; 

通常,這是容易受到XSS攻擊,但在textarea,所有的腳本標籤將只顯示爲<script>和他們贏得了」被執行。

這是不安全的?

回答

17
</textarea> 
    <script type="text/javascript"> 
    alert("this safe..."); 
    /* load malicious c0dez! */ 
    </script> 
<textarea> 
+0

是的,我只是想到了這一點。哈哈哈。謝謝 – bobobobo 2009-07-14 00:41:27

+0

如果你總是要使用textarea的...你可以開發一個簡單的正則表達式只從字符串中刪除文本區域等,以防止上述攻擊......讓textarea的本身需要休息 – davidsleeps 2009-07-14 00:47:42

+0

+1拍的護理我給它 - @davidsleeps - 雖然這可能是真實的,則* *最好的方式來處理,這是唯一的白名單您需要的標籤,並確保您消毒用戶輸入 – 2009-07-14 00:50:29

1

strip_tags(string);

是美好的!誠實!

-2

夠好了基礎:

sanitized = str_replace("<", "&lt;", $_GET['whuh_you_say']); 
sanitized = str_replace(">", "&gt;", sanitized); 
1

如果用戶不應該使用任何HTML標記的損失(其中,如果你提出這個textarea的解決方案,是這種情況),只要運行它通過htmlspecialchars()htmlentities()並完成它。保證安全。

0

這篇文章談到了在textarea的google文檔中發現的XSS洞(我認爲這篇文章有點老了 - 所以谷歌現在可能已經保護了它),但它會破壞如何將textareas用作攻擊媒介。

ha.ckers.org discussing google docs textarea exploit