我已经从某些威胁和漏洞人员那里得到了一些有关返回HTTP 500响应代码的网站的反馈。从本质上来说,建议是必须采取一切可能的措施来避免服务器投掷500(即广泛的表单输入验证),这很好。抑制HTTP 500响应代码
但是,该建议还表明,通过将标记插入随机查询字符串中导致ASP.NET请求验证触发或操作视图状态等手段来破坏安全性的尝试也不应该返回HTTP 500.显然,本机框架行为是解释请求并可能抛出一个自定义错误页面,但即使这样也会返回一个500响应代码。
所以我想了解如何解决这个问题。有没有什么办法在.NET级别或IIS级别配置应用程序,以便在引发500时返回HTTP 200?或者这是否成为应用程序事件中的global.asax级别的编码练习?还有其他的后果需要考虑吗?
顺便说一句,从安全侧的理由是,它会返回HTTP 500的应用程序可以通过机器人随机扫描安全漏洞和提示进一步恶意活动被视为“低挂水果”。我个人并不相信修改响应代码会带来任何实际的安全收益,但我很乐意接受专业人士的建议。
永远不会抛出500错误代码让你更安全?不要听起来对我来说,除非你在调试信息中粘贴错误页面。 – Schwern 2010-02-10 08:06:36
我正在谈论的应用程序与自定义错误,并没有调试或跟踪数据浮出水面。正如我上面所说的,这个职位并不是说它使应用程序更安全,而是使其不太可能成为入侵企图的潜在候选人。 – 2010-02-10 19:44:23
除了错误页面(url模式,表单字段名称,HTML样式,自定义HTTP标头...),还有很多其他提示您使用的应用程序,所以我不知道有多少真正的安全值抑制应用程序的自定义错误页面是。即使你确实隐藏了你正在使用的应用程序,但它只是混淆。当然,不应该采取“一切可能的措施”,当然也不会对客户说错了。 MarkR有最好的答案,创建一个通用的,静态的,全站500错误页面,比如Twitter的失败鲸鱼或Github的愤怒的独角兽。 – Schwern 2010-02-10 23:12:10