虽然,单纯的密码是不能确保基于网络的各种系统,但是,你还是可以通过采取各种打措施来提高系统的安全性。例如,你可以建立一些网络功能,以便用户能够采用稳健(strong)密码;你也可以选择合适的密码存储方式,并充分利用一些加密的类来保护它们。
稳健密码
请不忽视使用稳健密码的重要性。有时候,密码只是黑客和一系列潜在破坏措施的一堵墙。稳健密码通过具备以下的特性:
它们至少包含8个字符长,12个或多于12个则更好;
它们包含的成分可为下面几组:小写字母,大写字母,非文字和数字字符(如标点符号,*, #, $等),阿拉伯数字。
它们要经常更新,一般为90天或更长。
密码历史和其它限制
密码历史可以防止密码的不断更新,这是一条规则。同样,很多严格措施也可以达到保护系统的目的,比如在密码的特定地方加入字符。
当然,冗长或复杂的密码也不能减少黑客的攻击性,因为黑客总是不择手段地去获取正确的密码。然而,越长的密码,黑客破解密码的时间也就越长。所以,采用一些有效的措施,能够提高密码的安全性。
数字型的密码
如果你还没有相信稳健密码的重要性,请参见表A,这个表显示了黑客要破解一个密码的可能要组成的字符串次数。假设你有一个只包含5个大写字母或小写字母的密码,只需要以下公式就可以推出破解这个密码所需要的次数,公式中的!字符代表数字的因子。
26! / (26-5)! * 5!
表中说明了随着字母和密码的长度的改变,组合次数也跟着改变。
表 A
黑客一般情况下都采用一定的优化破解算法,并试图减少组合次数。然而,表中我说明的一个问题是,密码越长越复杂,黑客破解的难度就越高。
存储密码
前面我们已经提到:没有绝对安全的地方可以存放如密码这样的关键字。在通常情况下,密码都是作为文本存放在一个文件中,这看似很安全,但是如果一个无所不到的黑客一出现,你的密码无论存放在什么地方都有可能被盗取。
如果密码与SQL服务器相关联,你就得相信Windows系统和SQL服务器的集成安全性。你很可能采用下面的方式进行关联。可以看出,它没有包含一个明显的用户ID和密码。但是,如果你包含用户ID和密码,它们也常常被忽略。Windows和SQL服务器会不自觉的更改用户的日志。
DATABASE=northwind;SERVER=myserver;TRUSTED_CONNECTION=true;
在这种的情况下,你需要配置ASP.NET数目作为一个合法的SQL服务器可以访问的对象。否则,你只能把密码存储在网络之外的数据库或文件。虽然,不能保证100%不被侵犯,但却更有效地保护好系统。
加密
加密会让密码更有效,因为密码被添加了更复杂的保护层。但是,决不要随意运行自己的加密算法,不要认为这样会更安全,请不要太高估自己!如果你真的对加密很感兴趣,你可以使用.NET框架加密模型。
.NET框架加密模型提供了很多标准的加密算法。为了加密或解密,你必须采用一些能够转换字符或数据的算法。模型中提供了算法的两大类:对称和非对称。
通常来说,对称加密算法用于流,所以适用于对大量数据的加密。而非对称加密算法则适用于字符比较少的数据。