内容 - 处置被认为有害吗?

时间:2013-12-02 19:45:36

标签: wcf content-disposition

我目前正在开发一个基于HTTP GET请求返回文件的WCF服务。该服务的主要概念如下:

public Stream MyGetMethod()
{
    // Fetch the file
    byte[] myFile = FetchMyFile();

    // Set the name of the file using Content-Disposition
    WebOperationContext.Current.OutgoingResponse
       .Headers.Add("Content-Disposition", "attachment; filename=MyFile");

    // Return the file
    return new MemoryStream(myFile);
}

我使用Content-Disposition标头告诉浏览器它应该命名文件MyFile并且它应该显示一个SaveAs对话框(attachment部分)。

虽然这有效,但我一直在阅读有关Content-Disposition的一些不好的事情。

RFC2616州:

  RFC 1806 [35],从中导出了HTTP中经常实现的Content-Disposition(请参阅第19.5.1节)标头,它有许多非常严重的安全考虑因素。 Content-Disposition不是HTTP标准的一部分,但由于它已被广泛实施,我们正在记录其对实现者的使用和风险。有关详细信息,请参阅RFC 2183 [49](更新RFC 1806)。

RFC2183我得到:

  

由于此备忘录为发件人提供了建议文件名的方法,因此   接收MUA必须注意发件人的建议文件名
  不代表危险。以UNIX为例,有些危害   将是:

     
      
  • 创建启动文件(例如," .login")。
  •   
  • 创建或覆盖系统文件(例如" / etc / passwd")。
  •   
  • 覆盖任何现有文件。
  •   
  • 将可执行文件放入任何命令搜索路径       (例如,"〜/ bin / more")。
  •   
  • 将文件发送到管道(例如" | sh")。

         

    通常,接收MUA不应命名或放置文件   这样它将在没有用户的情况下被解释或执行   明确启动行动。

  •   

我看到这里有一些严重的安全方面,但我不太确定这是否会阻止我使用它,就像上面的WCF服务一样?

正如我所看到的,我认为它应该没问题,因为所有主流浏览器都理解标题,虽然上面代码段中的代码很简单,但我看不出它是如何成为安全威胁的?如果我错了,请纠正我。

感谢。

1 个答案:

答案 0 :(得分:-1)

安全使用Content-Disposition,为了更加安全,不允许用户提供文件名,或者自己添加一些随机的唯一名称前缀或sufix或文件扩展名。