3

在我的 Zend Framework MVC 应用程序中,我只使用了两种请求方法:GET 和 POST。我想知道如果收到其他请求类型(例如 PUT 或 DELETE),是否应该在我的基本控制器中进行检查以引发异常。

据我所知,有两个方面需要考虑:

  1. 它会提高安全性吗?如果我允许框架响应 PUT、DELETE 等,我是否会给潜在的黑客一个先机?
  2. 它会干扰网站的正常运行吗?例如,搜索引擎机器人是否依赖 GET 和 POST 以外的请求?

非常感谢您的想法!

4

2 回答 2

2

正确的响应代码是405 Method Not Allowed,包括Allow: GET, POST 标题。

10.4.6 405 方法不允许

Request-URI 所标识的资源不允许使用 Request-Line 中指定的方法。响应必须包含一个 Allow 标头,其中包含所请求资源的有效方法列表。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

于 2013-03-24T02:22:30.790 回答
1

人们由于错误或故意违反您的应用程序/框架/网站等的 api,以探测您的网站的弱点。(仅当您的网站仅在内部或在公共网络上时,频率才重要。)

如果您的网站支持开发人员,那么这可能是使用不允许的 405 方法代码回复的原因。也许只有在会话(假设会话)被标记为处于开发人员模式时。

如果您不期望有效的开发人员,那么我建议默默地吞下任何不好的输入,以使坏人更难。

在正常情况下不提供错误消息的另一个原因是:在特定情况下缺少错误消息可以解释为坏数据使其比其他数据更进一步进入您的堆栈 - 概述了可能的攻击路线。

最后,错误返回(类型、响应前的延迟等)可用于表征应用程序/框架的特定版本等。一旦发现攻击向量,这可用于快速定位其他易受攻击的安装。

是的,以上是悲观的,我深情地记得 80 年代,每个人都响应 ping、echo 和其他诊断请求。但是坏人在这里,我们有责任加强我们的系统。有关更多信息,请参阅此TED 视频

于 2013-03-24T08:48:12.557 回答