为什么在REST请求中验证内容类型标头

时间:2016-11-23 11:23:46

标签: rest security

OWASP website建议验证内容类型标头。但它并未指明相同的理性。即使我没有阅读或使用它,我应该验证内容类型标题的原因是什么?

  

当POSTing或PUTting新数据时,客户端将指定   内容类型(例如application / xml或application / json)   传入的数据。服务器永远不应该采用Content-Type;它   应始终检查Content-Type标头和内容   相同的类型。缺少Content-Type标头或意外   Content-Type标头应该导致服务器拒绝内容   406不可接受的回复。

1 个答案:

答案 0 :(得分:2)

我想到的一个例子是跨站点ajax请求,很容易发送text/html请求,该请求不会生成转机前请求,但applictaion/json无法生成}。因此,如果您的服务具有期望json和更改服务器状态的POST操作,则可以在内容类型接受text/html时利用CSRF,但如果application/json有一些基本保护验证,因为如果对飞行前的响应没有明确允许CORS帖子,浏览器将不会从其他域发送请求。

因此,跨域ajax请求的某些属性取决于内容类型。我认为这可能是主要原因。

同样从更理论的角度来看,需要解析数据的格式。我无法想到实际的漏洞,但至少在理论上,尝试以错误的格式解析数据可能会导致错误的结果,解析的内容与它们应该是的不同。最好只是验证客户端实际上是在发送它声称的内容,以及它应该是什么。