只是一個簡短的問題,我被要求通過一個VB應用程序,並修復所有可能發生跨站點腳本的地方。我將<%=更改爲<%:以及他們在代碼中將html放在一起的任何地方,並相應地將一個字符串注入server.htmlencode或server.urlencode。我的問題是有時他們使用的是htmlwriter。我假設他們是否使用htmlwriter,我不需要擔心跨站點腳本,因爲作者會自動編碼任何字符串。那是對的嗎?htmltextwriter和跨站點腳本
1
A
回答
3
是的,它在寫入HTML文檔時確保您不受XSS影響,但必須使用HtmlTextWriter.WriteEncodedText
方法。
' Assign a value to a string variable,
' encode it, and write it to a page.
colHeads = "<custID> & <invoice#>"
writer.WriteEncodedText(colHeads)
writer.WriteBreak()
將輸出
<custID> & <invoice#>
到流。
請注意,使用<%:
和WriteEncodedText
只適合輸出到HTML上下文。
<script>
var myVariable = '<%: thisIsWrong %>';
</script>
在此背景下HttpUtility.JavaScriptStringEncode
應使用(與<%= %>
支架,以防止不正確的HTML編碼過):他們應該不被輸出到JavaScript時使用。這個功能也正確地將特殊字符編碼,因此,如果</script>
是在腳本標籤被渲染,企圖關閉HTML腳本標籤準備XSS攻擊,它會被渲染爲:
\u003c/script\u003e
這是正確的JavaScript編碼將其理解爲</script>
,但沒有將瀏覽器解釋爲文字結尾腳本標記。一些天真寫入的JavaScript編碼例程不會將其轉換,因爲該序列不包含\
,"
或'
字符。我只是想我會提到一些阻止XSS的其他人找到這篇文章的細微差別。
如果不確保關閉腳本標籤沒有被渲染,那麼像這樣的攻擊是可能的
</script><script>alert(1)</script>
其在瀏覽器中呈現爲
<script type="text/javascript">
alert('</script><script>alert(1)</script>');
</script>
和瀏覽器將解釋腳本標籤結尾爲alert('</script>
,並簡單地執行新腳本標籤中的內容。
隨着JavaScriptStringEncode
功能,因爲它呈現,因爲這是安全的:
<script type="text/javascript">
alert('\u003c/script\u003e\u003cscript\u003ealert(1)\u003c/script\u003e');
</script>
不包含</script>
的瀏覽器來解釋。
0
剛剛試了一下遺憾的是它不保護你免受跨站點腳本我做了一個aspx頁面,並在後面的代碼我把
我跑了頁面和JavaScript警告彈出,所以我猜的HtmlTextWriter並不能保護您免受跨站點腳本攻擊
相關問題
- 1. params.merge和跨站點腳本
- 2. document.domain和跨站點腳本
- 3. 跨站點腳本
- 4. 跨站點腳本?
- 5. 跨站點腳本
- 6. XMLHttpRequest跨站點腳本?
- 7. 避免跨站點腳本
- 8. 跨站點腳本預防
- 9. 跨站點腳本問題
- 10. 跨站點腳本表單
- 11. 跨站點腳本幫助?
- 12. 保護跨站點腳本
- 13. mysql注入和跨站點腳本 - CodeIgniter
- 14. JavaScript - 跨站點腳本和父窗口
- 15. 跨站點腳本 - Cookie加密
- 16. 什麼是跨站點腳本
- 17. 微軟反跨站點腳本庫
- 18. 跨站點腳本攻擊XSS
- 19. 消除跨站點腳本的方法
- 20. 全局跨站點腳本操作
- 21. JavaScript中的跨站點腳本編制
- 22. 如何執行跨站點腳本(XSS)
- 23. 從圖像中跨站點腳本
- 24. Fortify跨站點腳本:驗證不佳
- 25. 跨站點腳本 - 這是好嗎?
- 26. 跨站點腳本攻擊,麻煩
- 27. CheckMarx - 跨站點腳本攻擊
- 28. 用於跨站點腳本的API?
- 29. GWT -xss(跨站點腳本)演示
- 30. 防止XSS(跨站點腳本)