强化文件中的跨站点脚本

Fortify Cross Site Scripting in File

我在控制器中有以下代码。 参数 base64String、fileName 正在从浏览器发送。

var fileContent = Convert.FromBase64String(base64String);
return File(fileContent, contentType, fileName);

如何解决这里的 XSS 威胁?

以上代码基于此处推荐的修复

我假设您不会 HTML 返回给您的用户(您返回的是 PDF 或 Excel 文件,或其他供浏览器下载而不是渲染的东西)。

一般准则如下:

  • 设置正确Content-Typeheader.

  • 设置以下响应 header:X-Content-Type-Options: nosniffInternet Explorer will try and auto detect the content type等浏览器忽略你刚刚设置的

  • 设置 Content-Disposition header 以便浏览器下载文件而不是显示文件:Content-Disposition: attachment; filename="bar.pdf"

遵循上述内容应确保您的浏览器不会执行文件中包含的任何脚本代码。请注意IE (again!) can sometimes process script in XML files,因此您应该对此进行测试。