【问题标题】:why validate content-type header in REST request为什么要在 REST 请求中验证内容类型标头
【发布时间】:2017-04-07 09:17:11
【问题描述】:

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

当 POST 或 PUT 新数据时,客户端将指定 的内容类型(例如 application/xml 或 application/json) 传入的数据。服务器永远不应该假设 Content-Type;它 应始终检查 Content-Type 标头和内容是否 同一类型。缺少 Content-Type 标头或意外 Content-Type 标头应该导致服务器拒绝内容 带有 406 Not Acceptable 响应。

【问题讨论】:

    标签: rest security


    【解决方案1】:

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

    所以跨域ajax请求的一些属性依赖于内容类型。我想这可能是主要原因。

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

    【讨论】:

    • accept 头呢?还是算作一个单独的问题。
    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2018-05-07
    • 1970-01-01
    • 2012-06-01
    • 2011-08-05
    相关资源
    最近更新 更多