2013-07-02 25 views
0

在我们的Web应用程序(WebInspect)中运行安全扫描后,它报告了一些aspx页面存在多个XSS漏洞。跨站点脚本 - 被URL修改的ASP.NET表单动作

请求URL似乎能够更改表单操作。

例,

/Website/somepage.aspx/'+alert(1234)+' 

形式动作更改为

action="'+alert(1234)+'" 

为了排除我们的应用程序代码中,我试图与默认的新的Visual Studio Web窗体项目,它允许相同的。

这怎么能防止?

我总是被告知未经验证的输入被反映到页面中是坏消息。

+0

参数化变量并清理输入 – ApolloSoftware

+0

这必须与您设置的重写规则有关。 '/Website/somepage.aspx/'+ alert(1234)+''必须提供一个错误页面,而不是将其转换为'+ alert(1234)+'。至少对我来说没有找到错误页面,因为这部分'/'+ alert(1234)+''是url上的一个新文件。 – Aristos

+0

我没有变量来参数化或验证。该url已被添加到aspx页面url的末尾,并且它导致页面在修改了表单操作的情况下呈现。我没有看到输入作为查询字符串的一部分来验证。这完全发生在我的代码的外面。我已确认该行为发生在Visual Studio 2012未更改的开箱即用WebForm项目类型中。 – solidstore

回答

0

请检查您的global.asax - Application_Start以查看是否有任何路线已被定义。

+0

不在我们的代码中,但我开始怀疑第三方库可能会这样做。有没有简单的方法来查看定义的路线?也许从测试页面列出它们? – solidstore

+0

嗯..不能说肯定..也许枚举路线集合? 'Dim routeCollection AS System.Web.Routing.RouteCollection = System.Web.Routing.RouteTable.Routes' – Abhitalks

1

刚刚装上去的动作,这样的事情:

<form id="id_form" runat="server" action="Default.aspx"> 

当动作形式不指定ASP填补这个属性与您在URL中写道旁边的最后一个斜线。如果你写了一些asp没有重写这个。

+0

请解释为什么你的代码会回答提问者的问题。 –