不要在http响应中执行标志?

时间:2012-07-09 01:10:26

标签: httpresponse

我正在阅读有关能够上传和下载文件的网站的攻击。一些攻击是关于上传jpg,这实际上是一个html文件和一个评论,如果你想让用户存储html并下载它们(或者可能使用另存为功能在浏览器中查看它们)。< / p>

我可以用某种类型的标志来表示不执行吗?我希望用户可以查看其他已上传的图片或视频文件。如果我想要显示用户html但我不想强迫用户下载它们(内容处理附件)该怎么办。

有没有办法可以说嘿这里是一些用户数据。它可能是一个图像,所以我应该允许img src工作。它可能是一个HTML,所以我希望用户看到它,但不允许它读/写cookie / localstorage /调用ajax请求/等?

-edit-来想想吧。我的所有用户数据都托管在自己的cookieless子域中,用于静态文件。这将解除我提到的许多问题,但还有什么需要处理?另外我相信我的mime响应完全取决于我的网络服务器(nginx atm),它可以简单地查看文件扩展名。

-edit2-我调整了我的nginx配置以添加application/unknown Content-Type。它似乎完全符合我的要求。我看到了一个使用octet-stream用于未知文件的建议,但这会导致浏览器(至少是firefox)尝试下载它,即使它的jpg能够在浏览器中查看。

1 个答案:

答案 0 :(得分:1)

这完全取决于HTTP响应中的Content-Type

浏览器处理HTTP响应中Content-Type返回的数据。

例如,假设用户在上传字段中上传HTML文件,据称是为了上传照片,只要您的网络服务器提供Content-Type image/jpeg(或image/png等人)浏览器应将其作为图像处理 - 在这种情况下是无效图像,因为图像中包含奇怪的HTML内容而不是通常的二进制文件。

在任何情况下,如果您感觉不安全,您可以在上传验证期间随时查看文件数据。