问:我正在学习如何独立编程。在过去的9个月里,我自学了Microsoft Access 2007 VBA,并为我所在的公司开发了一些功效强盛的数据库利用程序。现在,我正筹备转向Microsoft Visual Studio开发环境,并对其中的C#和VB.NET深感兴趣。我想请教一下关于盒装软件中通常包含多个文件的问题。我知道许多DLL文件以及其他文件需要保存配置信息,但这些文件是如何创立的?这些文件是编程环境主动创立的,还是在设计和编程过程中开发人员手动创立的?应用第三方代码创立利用程序是否存在安全隐患?
答:在开发利用程序时,有两种代码需要确保是安全的:你自己编写的代码和来自第三方的代码。安全的含义是指代码中不包含可被用于损坏其处理的利用程序或数据的漏洞。从你提出的问题来看,你在学习如何开发利用程序方面已经取得了很大的进步。而我要强调的是,你是否在安全地编写代码,即正确地应用安全性功效编写能够抵抗攻击的代码。尽管互联网上说明如何为一个利用程序添加花里胡哨的功效的示例和教程汗牛充栋,但介绍如何确保这些花里胡哨的功效不使利用程序容易受到攻击的内容却凤毛麟角。
我强烈建议你花时间访问OWASP(Open Web Application Security Project,开放式Web利用程序安全项目)的网站。虽然OWASP重要关注基于Web的利用程序的安全性,但是其网站还包含了许多与任何类型的利用程序有关的安全性内容。OWASP还供给了一个OWASP.NET项目,致力于为应用Microsoft .NET Framework的软件开发专业人员供给一个相干信息和工具的中央材料库。另一个值得浏览的内容是微软的《安全编码指南》。
尽管编程涵盖众多主题,乍一看卷帙浩繁,但你只需要关注其中所涉及的安全性问题,这一点非常重要。微软MSDN库中的“安全性”页面以及其中“编写安全的代码”部分,是介绍如何加强代码安全性的一份优良资源。另外,你可能感兴趣的还有微软软件安全专家Michael Howard编写的多本著作,包含《编写安全的代码(Writing Secure Code)》、《软件安全的24宗罪——编程缺点与修复之道(24 Deadly Sins of Software Security)》和《软件安全开产生命周期(The Security Development Lifecycle)》。如果你从这些资源开端你的学习之旅,那么你很快就可以编写出硬朗且能够抵抗攻击的利用程序。
当然,软件开发人员盼望尽可能快地开发利用程序。为了加快软件开发的速度,大多数开发人员会应用其他人编写的代码,并使其适应自己的目标。只要能够懂得并检查应用的所有第三方代码,而不是仅仅将其粘贴到自己的利用程序中,这种做法当然无可厚非。加快软件开发速度的另一条捷径是应用其他开发人员编写的库或模块,例如拼写检查程序或图表制作工具。这些库或模块通常是以DLL文件的情势供给,你需要将其随着你的利用程序一起发布。毫无疑问,应用这样的第三方组件存在安全隐患。
那么,怎么知道一个第三方组件是否包含恶意代码或已被攻击者修正呢?你当然不该从不可信的起源下载组件用于自己的利用程序。我不会应用任何不公开源代码的组件,除非该组件是由著名供给商供给的。如果一个利用程序在建立时就已遭到损坏,那么它可以履行的恶意行动将不受任何限制。正是因为如此,金融业中以前过度应用可重用组件或依附第三方开发人员开发软件的许多公司,现在开端全面检查所有这些组件,以查找可能存在的后门或恶意代码。
最后,关于你的利用程序运行时需要访问的众多DLL文件,编译器将会主动创立或添加。去年,一个病毒通过沾染Delphi库中的组件攻击了Delphi的代码编译器。然后,在编译过程中,病毒又沾染了其他程序,将已编译的代码变成了一个病毒传递系统。这一安全事件表明,只应用正版授权的编译器并确保开发环境的安全至关重要。用于开发你的利用程序的盘算机应当是一次性应用的。同时,既要保护其物理安全,又要利用防病毒软件和防恶意软件的程序保护其逻辑安全。祝你取得更大的进步。
相关阅读