【发布时间】:2026-02-07 11:00:01
【问题描述】:
在对我们的 Web 应用程序 (WebInspect) 运行安全扫描后,它报告了一些带有一些 aspx 页面的 XSS 漏洞。
请求 URL 似乎可以更改表单操作。
例子,
/Website/somepage.aspx/'+alert(1234)+'
表单动作改为
action="'+alert(1234)+'"
为了排除我们的应用程序代码,我用默认的新 Visual Studio webform 项目尝试了这个,它也允许这样做。
如何防止这种情况发生?
我一直被告知,未经验证的输入反映到页面中是个坏消息。
【问题讨论】:
-
参数化变量并清理输入
-
这一定与你设置的重写规则有关。
/Website/somepage.aspx/'+alert(1234)+'必须给出错误页面,而不是将其转换为+alert(1234)+。至少对我来说给出了一个找不到错误页面,因为这部分/'+alert(1234)+'是 url 上的一个新文件。 -
我没有要参数化或验证的变量。该 url 已添加到 aspx 页面 url 的末尾,它会导致页面呈现修改了表单操作。我没有将输入视为要验证的查询字符串的一部分。这完全发生在我的代码之外。我已经确认该行为发生在 Visual Studio 2012 中未更改的开箱即用 WebForm 项目类型中。
-
我没有任何重写规则。这不是一个 MVC 应用程序,只是一个老式的 WebForm Web 应用程序。
-
如果您执行 /Website/somepage.aspx/foobar 之类的操作,则将“foobar”放入表单的操作中。