我应该拒绝未使用的请求方法吗?

时间:2013-03-24 01:50:23

标签: http zend-framework http-headers

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

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

  1. 它会改善安全性吗?如果我允许框架响应PUT,DELETE等,我是否会给潜在的黑客提供一个良好的开端?
  2. 是否会干扰网站的正确操作?例如,搜索引擎机器人是否依赖GET和POST以外的请求?
  3. 非常感谢您的想法!

2 个答案:

答案 0 :(得分:2)

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

  

10.4.6 405不允许的方法

     

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

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

答案 1 :(得分:1)

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

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

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

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

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

是的,上面是悲观的,当我们回应ping,echo和其他诊断请求时,我深情地记得80年代。但坏人在​​这里,我们有责任强化我们的系统。有关详情,请参阅此TED video