文件BinaryWrite上的HP Fortify跨站点脚本问题

时间:2019-04-02 09:33:16

标签: c# xss

通过HP Fortify扫描时,我有以下代码,在以下行显示XSS问题:Response.BinaryWrite(buffer);

我该如何解决Fortify指出的XSS问题?

    void ShowPDF(string infilepath)
    {
        WebClient client = new WebClient();
        Byte[] buffer = client.DownloadData(infilepath);

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-length", buffer.Length.ToString());
        Response.AddHeader("content-disposition","attachment; filename=hearingprep.pdf");
        Response.BinaryWrite(buffer);

    }

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

Fortify所说的是您将 不受信任 的内容放入浏览器。

执行BinaryWrite(buffer)时。 Fortify触发的规则可能是因为您直接使用来自buffer(来自不受信任来源)的DownloadData

  1. 因此,首先,尝试在字符串infilepath上的代码中添加清理功能,然后看看会发生什么。
  2. 在那之后,如果您可以在Byte[] buffer中添加消毒剂,那么这应该可以彻底解决Fortify造成的伤口。

如果您不能执行2.,则应该准备真正拥有XSS。

答案 1 :(得分:0)

提出该问题为误报,并确保传入的文件位置为受信任位置。