信任文件上传中的“内容类型”

时间:2015-12-28 20:59:11

标签: java rest file-upload multipartform-data

如果我支持我的REST API用户上传内容(主要是图片和视频),是否安全信任他们在(多部分)上传中声明的Content-Type?或者,我应该在内容上运行某种“媒体类型检测”(例如,使用Apache Tika)以确保声明的媒体类型与检测到的实际媒体类型相对应?通过引入这种媒体类型检测步骤,我是否过度热心?

3 个答案:

答案 0 :(得分:1)

永远不要相信您从用户那里获得的输入。始终检查服务器端代码,包括文件类型,文件大小等。使用REST API或Javascript使用户的体验更顺畅,更快。

答案 1 :(得分:1)

你当然不应该盲目信任Content-type标题或任何其他标题。应该使用这些东西来告知您有关如何处理请求的决定。因此,Content-type: application/json应该允许您将消息体解释为json对象 - 然后可以将这种请求传递给JSON反序列化器以将其绑定到对象。

忽略Content-type标题是错误的,因为请求正文包含看起来的数据。如果请求内部不一致,则应拒绝该请求。不发送Content-type标题是一回事,而标题是错误的是另一回事。

因此,您可能希望使用某种自动检测的唯一情况应该是您没有关于内容的合理信息 - Content-Type非常通用(例如“ / “)或根本不存在。在这种情况下,值得决定某种自动检测是否可行或有价值。

答案 2 :(得分:0)

您绝对应该拒绝所有丢失Content-Type标题(以及Content-Length)的请求或将其设置错误。

绝对不是过度热心,而是要保护系统。如果您对内容有疑问,请检查一下。但请记住在检查内容之前验证大小。如果你有一个代理服务器(例如nginx),它有适当的模块来拒绝太大的请求。