我不熟悉JavaScript什麼是「逃逸」與「轉義的」輸出
學習模板Node.js的模板引擎,它已經「逃」 &「轉義的」輸出
實際上是什麼?「轉義「&」轉義「輸出?
難道像「包含一次」&「包含」?
(谷歌提供有關這個沒有結果)
我不熟悉JavaScript什麼是「逃逸」與「轉義的」輸出
學習模板Node.js的模板引擎,它已經「逃」 &「轉義的」輸出
實際上是什麼?「轉義「&」轉義「輸出?
難道像「包含一次」&「包含」?
(谷歌提供有關這個沒有結果)
轉義和轉義是防止Cross Site Scripting
(XSS)攻擊是有用的。這是常見的網絡攻擊之一,因爲如果網站設計得不是很精心的話,創建攻擊媒介將會很容易。它的排名是number 3 in the OWASP's Top 10 vulnerabilities of 2013
。
的主要意圖是,NOT讓瀏覽器執行或解釋在比預期不同的方式HTTP響應。
例如,假設您有一個網頁接受用戶輸入他的地址,並且您希望用戶在下一頁中確認它。因此,您將獲取用戶輸入的地址並將其顯示在下一頁中。如果用戶輸入一個有效的地址,這不會是一個問題。如果用戶輸入這樣的事情
<script>
alert("Welcome");
</script>
你的下一個頁面會自動產生一個警告框說:Welcome
。現在,考慮這種情況。您正在編寫一個博客應用程序,並且用戶在提供的文本框中輸入上面看到的腳本。您將存儲在數據庫中,並且任何想看您的博客的人都將看到該警報框。最糟糕的是,如果攻擊者將這種情況置於無限循環中,那麼訪問該博客的人將根本無法閱讀該內容。
這只是基本的攻擊之一,如果你不逃避文本,這是可能的。
因此,通常,輸入的文本用戶將被轉義並存儲在數據庫中。例如,上面看到的攻擊向量(script標籤的東西)會變成這個樣子,以後HTML escaping
<script><br/> alert("Welcome");<br/></script>
現在,瀏覽器不會認爲這是一個腳本元素,但一個HTML元素,所以它會顯示爲
<script>
alert("Welcome");
</script>
而不是執行它。
Escape:該函數對特殊字符進行編碼,但是:* @ - _ +。/http://www.w3schools.com/jsref/jsref_escape.asp
Unescape:unescape()函數對已編碼的字符串進行解碼。 http://www.w3schools.com/jsref/jsref_unescape.asp
['escape'](https:// developer。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape)和['unescape'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape)已棄用,不應使用。比起W3School(例如[MDN](https://developer.mozilla.org/en-US/)),有更好的函數('encodeURI','encodeURIComponent',...)和更好的引用。 –
[偉大的逃避現實(或:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze