我最近接手了一个应用程序,我们最近做了一个appscan,我得到了一个标记为易受攻击的项目。报告建议的补救任务是拒绝恶意请求。报告称apps可以尝试:
以下更改已应用于原始请求:将HTTP标头设置为“http://bogus.referer.ibm.com”
我在第一次运行appscan时标记了这一点,然后输入代码来检查是否提供了urlreferer,如果是,请确保它与url中的主机相同,否则终止用户的会话并重定向到登录页。我们再次运行appscan并再次标记,我不知道如何处理它。
当我查看报告时,它显示它被放入伪造的引用者,服务器响应302状态,重定向,然后一个请求被放入登录服务器响应202,给予它。 Appscan推理说:
在不同的会话中发送了两次相同的请求,并收到了相同的回复。 这表明没有任何参数是动态的(会话标识符仅在 cookies)因此应用程序容易受到此问题的影响。
但是回复总是不一样吗?如果检查失败302后跟202,则无论用户如何,都会出现重定向和登录页面。有谁知道如何处理这个?我猜我可以将用户的会话ID放入重定向网址,这样appscan就会看到它是否不同,但我认为必须有另一种方式。
这是一个.net 4应用程序。使用Session对象跟踪用户,如果重要,则不使用表单身份验证。
答案 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并定期释放