如何拒绝恶意请求

时间:2013-04-30 20:09:28

标签: c# asp.net

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

  

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

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

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

  

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

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

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

2 个答案:

答案 0 :(得分:4)

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

使用HttpException返回403(您可能需要做一些额外的工作,也不要变成500)

Throwing an HttpException always sends back HTTP 500 error?

应用程序扫描具有高度可识别的签名 - 他们在同一分钟内抛出了100个异常。作为错误记录基础结构的一部分,您可能希望在同一分钟内说出5个异常之后呈现验证码,或者呈现应用扫描引发应用程序永不抛出的错误的验证码(如非常长的URL,查询.jsp .aspx应用程序中的文件)。一旦appcanner被ID了,你就想通过重定向到错误页面来毒害他们的会话,直到他们解决了一个问题。这样做的缺点是,在应用程序抛出异常之后,用户将被提供capcha的可能性很小,比如当用户放置>时出现安全错误。在文本框中。您可能希望也可能不希望为所有应用扫描程序实施此功能,可能只是恶意程序,取决于组织中的激励。

答案 1 :(得分:0)

ngx_dynamic_limit_req_module ref

ngx_dynamic_limit_req_module用于动态锁定IP并定期释放