2009-10-28 57 views
0

我有一个ASP.NET应用程序,它将在单击按钮时在文本框中显示数据集的XML。何时清除文本框XML以避免标记为XSS

再次点击该按钮应该重新运行请求,但在此之前,我收到一个错误,说'从客户端检测到潜在危险的Request.Form值(txtXML="<NewDataSet> ...)'显然,尖括号正在被解释为潜在的跨站脚本攻击。

我试图清零按钮单击事件处理程序,并在Page_Load()方法文本框中的文字,但这些似乎为时已晚。

是否有其他事件,我可以处理,让我清晰地将文字足够早在请求处理过程?

回答

0

您可以在客户端发送不必要的数据返回到服务器之前,使用JavaScript清除文本框:

上的开关按钮:<asp:Button OnClientClick="document.getElementById(...).value = '';" .... />类似 什么的。

但这仍然看起来像一个黑客。如果你只是想显示文字,为什么不使用更适当的控制呢?

+0

我只是在文本框中显示XML作为测试,而不是用于生产服务器,所以安全性不是问题。 – Buggieboy 2009-10-28 17:10:05

0

有潜在危险的Request.Form值从客户端

呀检测,这是ASP.NET的完全虚假试图减轻跨站点脚本漏洞。您可以通过添加以下内容来关闭它:

ValidateRequest="false" 

到模板顶部的@Page指令。

当然,你应该确保你正确地HTML转义任何传入<&符号之前,你吐在textarea,否则你会容易受到XSS攻击。但即使启用了ValidateRequest,情况也是如此。它只会让你感到迷惑和幻想的安全感。在MS

羞辱,在默认情况下打开此执迷不悟应用最新的功能上。

如果您不需要txtXML到下一个请求,应提交,请尝试将其从表格/删除name属性。