gpt4 book ai didi

c# - 文件上传安全问题

转载 作者:可可西里 更新时间:2023-11-01 08:44:25 25 4
gpt4 key购买 nike

我有一个可供公众使用的 Web 表单,它具有文件上传功能。现在文件要么保存在网络服务器上,要么作为电子邮件附件发送出去。我们对大小有限制,即 15MB 和上传文件的扩展名。我们的 SMTP 服务器位于同一网络服务器上。我担心安全问题,因为任何人都可以上传恶意文件并对我们的生产 Web 服务器产生影响。

这种公开的文件上传控制对我有什么风险?是否有人可以通过上传恶意文件在 Web 服务器上执行恶意脚本。

我做了一些研究,发现了以下几点

  1. 如果我在电子邮件中将文件作为附件发送,该文件将临时存储在临时 ASP .Net 文件夹中,一旦发送电子邮件,该文件就会被删除。
  2. 您可以在将文件保存到文件系统之前重命名文件。
  3. 您可以将文件保存在与您的网站不同的位置
  4. 您可以进行某种实时病毒检查。我不确定你该怎么做。我正在阅读一些命令行病毒扫描。但不确定我是否真的需要它。

这些只是几点,但我想知道文件上传中的任何盲点。

最佳答案

要回答有关可能的安全漏洞的问题,是的,即使您不将文件保存到磁盘,您也肯定会在您的应用程序中和您的用户中创建漏洞。但是您可以采取几条防线来验证。

首先是明确限制可以上传的文件类型,您可以通过白名单和检查扩展名来做到这一点,但不要就此止步。 您还应该通过查看文件的内容来验证,以确保它符合预期的格式。这可能很关键,因为坏人可以将文件 header 注入(inject)上传的文件并将您的系统用作僵尸来传播他的恶意软件。

其次,您应该对上传的文件运行病毒扫描,您可以通过使用命令行执行本地病毒扫描程序来执行此操作。对于包括 Trend Micro 在内的许多病毒扫描来说,这很容易做到,除非您正在查看大量文件上传,否则它不会对您的服务器造成巨大负担。

确保您从不传递路径作为用户提交的数据(通过 GET 或 POST 下载),因为这可能会使您面临路径遍历攻击。如果您的用户需要从浏览器下载文件,您可以创建一个存储记录的数据库,然后创建一个 Controller 或页面,根据数据库记录和用户对该记录的访问来获取它,而不是提供一个用户可以控制并用于从您的服务器获取文件的路径。

确保您将保存到的目录网络服务器无法读取,这样他们就不会上传恶意软件脚本,然后通过 HTTP 从浏览器执行它

确保您根据某些反 XSS 库验证所有用户输入(Microsoft 提供了一个 http://www.microsoft.com/en-us/download/details.aspx?id=28589)

希望对您有所帮助!

关于c# - 文件上传安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com