如何拒绝恶意请求

Par*_*osh 6 c# asp.net

我最近接手了一个应用程序,我们最近做了一个appscan,我得到了一个标记为易受攻击的项目.报告建议的补救任务是拒绝恶意请求.报告称apps可以尝试:

对原始请求应用了以下更改:将HTTP标头设置为" http://bogus.referer.ibm.com "

我在第一次运行appscan时标记了这一点,然后输入代码来检查是否提供了urlreferer,如果是,则确保它与url中的主机相同,否则终止用户的会话并重定向到登录页面.我们再次运行appscan,它再次被标记,我不知道如何处理这个问题.

当我查看报告时,它显示它被放入伪造的引用者,服务器响应302状态,重定向,然后一个请求被输入登录服务器响应202,给予它.Appscan推理说:

在不同的会话中发送了两次相同的请求,并收到了相同的响应.这表明没有任何参数是动态的(会话标识符仅在cookie中发送),因此应用程序容易受到此问题的影响.

但是响应总是不一样吗?如果检查失败302后跟202,则无论用户如何,都会出现重定向和登录页面.有谁知道如何处理这个?我猜我可以将用户的会话ID放入重定向网址,这样appscan就会看到它是否不同,但我认为必须有另一种方式.

这是一个.net 4应用程序.使用Session对象跟踪用户,如果重要,则不使用表单身份验证.

Mat*_*tin 4

设置视图状态用户密钥,参考:https: //security.stackexchange.com/questions/19152/how-does-viewstate-protect-against-csrf 这使得在无法访问最近页面的情况下发送查询变得更加困难和你的饼干。

使用 HttpException 返回 403(您可能还需要做一些额外的工作以防止它变成 500)

抛出 HttpException 总是会发回 HTTP 500 错误?

应用程序扫描有一个高度可识别的特征——它们在同一分钟内抛出数百个异常。作为错误日志基础设施的一部分,您可能希望在同一分钟内出现 5 个异常后显示验证码,或者在应用程序扫描抛出但您的应用程序从不抛出的错误上显示验证码(例如很长的 URL、对 .jsp 的查询) .aspx 应用程序中的文件)。一旦应用程序扫描仪被识别,您就会希望通过始终重定向到错误页面直到他们解决验证码来毒害他们的会话。这样做的缺点是,在应用程序抛出异常(例如,当用户在文本框中输入 > 时出现安全错误)后,向用户显示验证码的可能性很小。您可能想也可能不想为所有应用程序扫描仪(也许只是恶意应用程序扫描仪)实现此功能,具体取决于您组织的动机。