代码之家  ›  专栏  ›  技术社区  ›  Buggieboy

何时清除文本框XML以避免标记为XSS

  •  0
  • Buggieboy  · 技术社区  · 16 年前

    我有一个ASP.NET应用程序,当单击按钮时,它将在文本框中显示数据集的XML。

    再次单击该按钮应该会重新运行请求,但在此之前,我收到一个错误,说“有潜在的危险请求。从客户端检测到窗体值”( txtXML="<NewDataSet> “…)”显然,尖括号被解读为一种潜在的跨站点脚本攻击。

    我试图清除button click事件处理程序和Page_Load()方法中的文本框文本,但这些似乎太晚了。

    是否还有其他事件可以让我在请求处理过程中尽早清除文本?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Audrius    16 年前

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

    打开按钮: <asp:Button OnClientClick="document.getElementById(...).value = '';" .... /> 或者类似的东西。

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

        2
  •  0
  •   bobince    16 年前

    一个潜在的危险请求。从客户端检测到窗体值

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

    ValidateRequest="false"
    

    到模板顶部的@Page指令。

    当然,你应该确保你是正确的HTML转义任何传入 <& 在你把符号吐到文本区域之前,否则你会很容易受到XSS攻击。但即使启用了ValidateRequest,情况也是如此;它只会给您带来一种模糊和安全错觉。

    可惜微软在默认情况下启用了这个错误的应用程序破坏功能。

    如果不需要在下一个请求中提交txtXML,请尝试将其移出表单/删除name属性。

    推荐文章