【逸出字元】HTML 字元實體< &gt: &

來源:互聯網
上載者:User

標籤:提示   java   提交   使用情境   div   com   bsp   dex   javascrip   

在開發中遇到javascript從後台擷取的url 會被轉義,如:http://localhost:8080/Home/Index?a=14&b=15&c=123,想把它轉成http://localhost:8080/Home/Index?a=14&b=15&c=123

網上找了半天的解決方案:

轉義分為escapeHTML和unescapeHTML,先看兩個函數的實現。

js代碼:

/** * @function escapeHTML 轉義html指令碼 < > & " ‘ * @param a - *            字串 */escapeHTML: function(a){    a = "" + a;    return a.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/‘/g, "&apos;");;},/** * @function unescapeHTML 還原html指令碼 < > & " ‘ * @param a - *            字串 */unescapeHTML: function(a){    a = "" + a;    return a.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/&quot;/g, ‘"‘).replace(/&apos;/g, "‘");},

1,escapeHTML將< > & " ‘轉成字元實體 
使用情境: 
(1)使用者在頁面中錄入(比如輸入框) <script>alert(2);</script>, js將該內容提交給後端儲存 
(2)顯示時,後端將字串返回前端;js接收到之後: 
a, 使用escapeHTML,將字串轉為 &lt;script&gt;alert(2);&lt;/script&gt;此時,瀏覽器將能正確解析,因為瀏覽器接收到實體字元後,轉成對應的角括弧等。 
b, 不使用escapeHTML,瀏覽器一看到<,便認為是html標籤的開始,直接把剛才的字串當指令碼執行了,這就是xss漏洞。 

2,unescapeHTML將字元實體轉成< > & " ‘ 
使用情境: 
後端將已經轉義後的內容顯示到頁面;比如&lt;script&gt;alert(2);&lt;/script&gt; 
js收到後: 
a,前端進行unescapeHTML,則可以直接dom操作,將標籤顯示到頁面。 
b,前端沒有unescapeHTML,則原樣輸出<script>alert(2);</script>,但此時並沒有執行。 

逸出字元: 

 

提示:使用實體名而不是數位好處是,名稱易於記憶。不過壞處是,瀏覽器也許並不支援所有實體名稱(對實體數位支援卻很好)。

【逸出字元】HTML 字元實體&lt; &gt: &amp;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.