下载自定义文件格式

时间:2011-04-19 09:46:44

标签: c++ file-upload file-format code-injection

我的任务是允许用户将文件上传到网页,然后其他用户就可以下载该文件了。

文件格式是自定义格式,对于此示例,我只需将其称为.ccx。这是由我们自己的定制软件打开的。这个想法是,用户可以上传教程文件以便彼此共享。

但是,我担心有人可能会设计一个.ccx文件来在用户计算机上植入病毒。这可能对我们的网站产生非常不利的影响,如果这样的文件被设计,用户会害怕下载,我们的竞争对手可能会利用它来利用我们。

  • 作为网络开发者,我如何确保上传的文件安全?我知道不可能百分百肯定,但我想改进目前“非常不确定”。

  • 此外,在我们的自定义软件中,可以采取哪些步骤来确保.ccx文件不会对用户计算机造成损害(使用C ++编写的Windows程序)?我在谈论exe相当于SQL注入。

感谢所有答案。

2 个答案:

答案 0 :(得分:3)

在服务器上,您可以对它们运行任何命令行病毒扫描程序,并让它们查找已知的病毒签名。然而,这是否会提高安全性是值得怀疑的:因为病毒编写者需要使用你的格式,他们的恶意文件似乎不太可能匹配任何已知的签名,其次你有误报的风险,否则有效的上传被拒绝。

您需要让客户端应用程序尽可能安全地处理文件格式。这意味着:

  • 不信任输入文件。验证一切。不要容错。如果您控制着写入此类文件的唯一应用程序,那么任何意外的字节都应该触发警报。
  • 进行大量测试(例如某种模糊测试以模拟随机输入变化)
  • 尽可能简化设计文件格式。如果文件格式很复杂,那么实现也是如此。实现越复杂,处理的格式功能越多,安全漏洞的风险就越高。
  • 确保使用操作系统安全功能,例如DEP或ASLR。
  • 确保所有从事该项目的开发人员都了解常见的安全漏洞以及如何避免这些漏洞。
  • 如果你真的非常担心可能的攻击媒介,请尝试沙箱加载代码。例如,这可以通过使用嵌入式脚本语言来实现。

您永远无法100%确定您的代码是安全的。所以最好采取一些预防措施:

  • 实施自动更新,以便能够快速修补安全漏洞。
  • 警告用户不要打开来自不受信任的作者的文件(并告诉他们您对“受感染”文件造成的任何损害不承担责任......)。

答案 1 :(得分:0)

以尽可能少的权限运行您的自定义软件。如果有人上传了损坏的文件,这可以确保即使他们获得对您软件的控制权,他们也不会妥协任何其他内容。