【问题标题】:HTML Encoding Form PostHTML 编码表单发布
【发布时间】:2009-11-03 03:16:36
【问题描述】:

一位用户向我发送了一些他们发布到我的一个页面的信息,这些信息可能存在 XSS 问题,但是查看服务器端代码,我认为它不会顺利通过我的代码。

他们说他们发送了这个:

forminfo=%27+%7C%7C+%27%27+%7C%7C+%27%25booleantest%3Atrue%2Ctrue%2Ctrue

我查看了这个,发现 %27 是一个撇号,而 %7C 是一个可能有风险的管道字符。

但是,如果数据以这种格式进入我的应用程序,它将崩溃,因为它对发布的信息进行字符串操作。它在冒号 (:) 字符上进行字符串拆分。 forminfo 是我的 HTML 输入元素之一的名称

如果它以

的形式出现
forminfo=' || '' || '%booleantest:true,true,true

然后它更清晰,我可以更好地看到他们发送的内容以及代码将如何处理输入。

他们是说他们以加密方式发布数据吗?我的应用程序会知道如何处理加密的发布数据并以某种方式对其进行解密吗?

他们没有收到错误,但如果我自己运行代码就会出错。

你能解释一下可能发生了什么吗?

【问题讨论】:

    标签: c# asp.net html encoding forms


    【解决方案1】:

    以下是URLEncoded数据:

    forminfo=%27+%7C%7C+%27%27+%7C%7C+%27%25booleantest%3Atrue%2Ctrue%2Ctrue
    

    如果您的应用程序存在以下问题:

    forminfo=' || '' || '%booleantest:true,true,true
    

    那么您确实遇到了问题,因为那是您的乐于助人的用户试图告诉您的。

    【讨论】:

    • 解码不会有问题,但是url解码发生在哪里?
    • 它作为 QueryString 变量的请求管道的一部分自动发生。
    【解决方案2】:

    可以在您的页面中解码和呈现十六进制和 base64 编码的 JavaScript - 如果您的页面正在将表单数据(注入的 JavaScript)返回到浏览器。

    为了更好地保护您的网站,您可能需要查看XSS (Cross Site Scripting) Cheat SheetCross-site Scripting (XSS)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2010-11-02
      • 1970-01-01
      相关资源
      最近更新 更多