什么是良好的编程实践来防止独立应用程序中的恶意软件?

时间:2009-03-24 17:42:10

标签: .net security malware

有没有人对如何防止对独立应用程序的恶意软件攻击有任何想法。假设这是连接到互联网的Windows机器上的程序,这是最常见的情况。

我也想知道什么类型的攻击是可能的。我相信.NET会在运行它之前对代码进行某种类型的静态检查,使用一种校验和。这将检测静态附加的恶意代码段。这可以解决吗?

动态注入代码怎么样?单独的程序空间在某种程度上阻止了这一点。感染数据文件怎么样?将数据存储在数据库中是否更安全,只使用服务调用而不进行文件操作?

内存使用技术如何提高安全性?我知道这不是一个独立的案例,但是,DNS服务器损坏的问题与我认为可预测的IP地址的使用有关。内存使用是否应该更难以预测?

2 个答案:

答案 0 :(得分:2)

  

我也想知道什么类型的攻击是可能的。

您可以查看的内容因应用程序而异。以下是一些可能有助于您入门的想法:

  • 假设您有一个图像编辑器,您需要确保人们不会因图像编码器/解码器库中的错误而利用缓冲区溢出。

  • 如果您有浏览器或文档查看器,则需要在允许用户浏览到该URL之前检查每个URL - 您应该禁用javascript注入。

  • 如果您正在处理套接字,请注意您不允许任何任意连接。

  • 如果您正在从系统剪贴板读取/写入,请仔细检查数据,不要遗漏任何内容。做适当的清理工作。

  • 签署您自己的二进制文件和其他可分发的内容。

  • 如果您的应用程序涉及安全性:

  • 使用一个好的加密库

  • 进行威胁分析
  • 不使用静态密码

还有更多......

  

动态注入代码怎么样?

这几乎总是因为您的代码中存在一些错误。通过静态分析工具运行代码,检查缓冲区溢出和朋友。

  

提高安全性的内存使用技术怎么样?

在多用户方案中,您的应用程序已经沙箱化,以便在每个用户自己的进程空间中运行。但是,为单个用户沙箱不同的应用程序没有意义。

答案 1 :(得分:1)

最重要的是:不要以管理员身份运行,或要求以管理员身份运行。使用CAS拒绝自己不需要的权限。这样,如果所有其他方法都失败并且您完全拥有,那么您只是搞砸了自己,而不是整个PC。