我的任务是允许用户将文件上传到网页,然后其他用户可以下载该文件。
文件格式是自定义格式,在本例中我将其命名为.ccx
。这是由我们自己定制的软件打开的。这个想法是,用户可以上传教程文件以相互共享。
但是,我担心有人可以设计一个 .ccx
文件来在用户的计算机上植入病毒。如果设计了这样的文件,这可能会对我们的网站产生非常负面的影响,用户会害怕下载,我们的竞争对手可能会利用它来占我们的便宜。
作为 Web 开发人员,我如何才能确保上传的文件安全?我知道不可能 100% 确定,但我想改进目前的“非常不确定”。
此外,在我们的定制软件中,可以采取哪些步骤来确保
.ccx
文件不会对用户计算机(用C++ 编写的Windows 程序)造成危害?我说的是等同于 SQL 注入(inject)的exe
。
谢谢大家的回答。
最佳答案
在服务器上,您可以对它们运行任何命令行病毒扫描程序并让它们查找已知的病毒签名。然而,这是否会提高安全性是值得怀疑的:由于病毒编写者需要定制您的格式,他们的恶意文件似乎不太可能匹配任何已知的签名,其次您有误报的风险,否则会导致拒绝有效上传。
您需要让您的客户端应用程序对文件格式的处理尽可能安全。这意味着:
- 不要相信输入文件。验证一切。不要容错。如果您控制着写入此类文件的唯一应用程序,那么任何意外字节都应该触发警钟。
- 进行广泛的测试(例如模拟随机输入变化的某种模糊测试)
- 将您的文件格式设计得尽可能简单。如果文件格式很复杂,实现也会很复杂。实现越复杂,要处理的格式特征越多,安全漏洞的风险就越高。
- 确保您使用操作系统安全功能,例如 DEP 或 ASLR。
- 确保参与该项目的所有开发人员都了解常见的安全漏洞以及如何避免这些漏洞。
- 如果您真的非常担心可能的攻击 vector ,请尝试对加载代码进行沙箱处理。例如,这可以通过使用嵌入式脚本语言来实现。
您永远无法 100% 确定您的代码是安全的。所以最好采取一些预防措施:
- 实现自动更新,以便能够快速修补安全漏洞。
- 警告用户不要打开来自不受信任的作者的文件(并告诉他们您对“受感染”文件造成的任何损害概不负责...)。
关于c++ - 下载自定义文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714491/