所有编程语言无论在其定义还是在其实现中都有其不安全性。这通常汇号称程序员对语言的误用,而对这些误解,一些相对开放的语言又缺乏相应的解释。现举例如下:
a) 未初始化的变量。除非进行特别的检查,否则单元测试不会发现他们。而这将导致,一个程序在不同的环境下虽然运行成功,但运行结果却不是期望值。
b) 当要求重新分配存储器的调用时应予以检查,以确保不仅释放指针而且释放该结构所用的存储器。
c) 运算符优先级的规则,一些语言的要求并不是那么严格,容易是程序员发生误解。
2.4.2 系统安全性
根据防范安全攻击的安全需求、需要达到的安全目标、对应安全机制所需的安全服务等因素,参照SSE-CMM("系统安全工程能力成熟模型")和ISO17799(信息安全管理标准)等国际标准,综合考虑可实施性、可管理性、可扩展性、综合完备性、系统均衡性等方面。
(1) 用户信息的安全性。
用户信息的安全性分别体现在用户密码保存与用户登录这两个方面。
A 在用户密码保存上,系统采用了MD5防篡改【5】。例如,某个用户密码为“111111”,记录到数据库中时密码则会被加密成一个无法反向破译的32位的16进制数。
B 在用户登录方面,作者在考虑了cookie与session的优劣后选择的session方式记录用户登录信息。其好处有两点:
a) Session采用的是服务器端保存的方案,比记录在客户端的cookie更加安全。
b) Session有良好可控的过期时间,只需要在web.config里面稍做设置,便可控制Session的过期时间,以保证用户在离开电脑后忘记关闭浏览器而被别人盗用账号。