只是一个简短的问题,我被要求通过一个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(跨站点脚本)