企业网站制作过程中保证程序安全性的四种技术
没有经过MD5加密的密码直接显示在数据库表中,如果被黑客下载数据,查出数据库中的密码,或者内部开发人员通过数据库查出用户的密码,都对以后用户的信息安全造成很大的影响。如果使用MD5加密后的密码,在数据库中看到的是一连串经过加密的字符串,不能看到真正的密码,这样能更好地保护网站的安全。虽然黑客也可以使用暴力破解,但是我们再结合生成图片验证码技术,那暴力破解的难度就将大大增强。MD5的全称是Message-Digest Algorithm 5,当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被 具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
凡是经过加密的密码,系统功能上多半有找回密码的功能,这是表面的测试,测试人员可以调用开发人员的数据表,查询是否经过加密,从而保证系统密码的安全,一般对具有大量会员的商业性网站必须使用。
当网站被黑客攻击或者其它原因丢失了数据,可以将备份的数据恢复到原始的数据,保证了网站在一些人为的、自然的不可避免的条件下的相对安全性。
一般人认为数据备份就只是数据库的备份,其实还有动态变化的图片、文件等也需要备份,因为文件、图片一般我们是不写入数据库里保存的。
一般我们采用数据库系统自动定时备份、定时自动删除几天以前的数据等,即可完成数据的备份功能。而图片、文件一般是不能自动备份,需要手工操作,所以我们必须要定期手工对网站的图片、文件进行备份操作。
对于已经做好的网站,数据库系统都会自动备份到服务器某个文件夹下,那么测试时我们就需要让程序开发人员提供可以下载数据备份文件的路径,即可知道是否已经做了自动备份功能,而自动备份间隔时间的确定,需要根据网站的更新频率来决定。
相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的网站扫描,就能发现部分网站存在SQL注入漏洞,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。
比如URL、表单等提交信息时,通过一段防止SQL注入的过滤代码即可防止出错信息暴露,或者通过转向,当系统出错时转到一个提示出错的页面等。同时服务器权限设置是一个非常重要的方面,由于涉及到服务器的配置比较多,本文不介绍。
对于文本型输入,如果要进行检查,就得根据字段本身的性质进行。例如如果是年龄,就得限定必须是数字,大小必须限定在一个范围之间,比如说18-120之间。对于用户名,应该建立一个集合,这个集合里存放有被允许的字符,或被禁止的字符。
这里特别需要说明的一点是关于检查程序的问题。目前,程序对输入数据的检查是在前台通过客户端脚本完成的,这样攻击者很容易就可以绕过检查程序。建议采用前后台结合的方法,既可以保证效率,有可以提高安全性。
如,此网站用ID来传送数值,如果在ID数值后面加一个SQL敏感符号,英文单引号“’”,打开此链接,如果出现的是浏览器的默认出错提示,则需要设置浏览器,使其错误提示出现,方法为打开浏览器:选项—Internet选项—高级,在设置里找到显示友好的HTTP错误信息勾掉,确认后再刷新,如果此时出现了数据库出错的提示,如:Microsoft OLE DB Provider for ODBC Drivers 错误 80040e21,那么说明本程序并没有防止SQL注入,反之如果只出现了如:“提醒您, URL有误,请与管理员联系”之类的提示,说明SQL已经防止了注入。检测表单方法如:如提交脚本,在输入框中输入特殊字符如:script_等,在此不再叙述,测试者可以在网上找到很多这样的方法。
普遍的客户端交互如留言本、会员注册等仅是按照要求输入内容,但网上有很多攻击软件,如注册机,可以通过浏览WEB,扫描表单,然后在系统上频繁注册,频繁发送不良信息,造成不良的影响,或者通过软件不断的尝试,盗取你的密码。而我们使用通过使用验证码技术,使客户端输入的信息都必须经过验证,从而可以解决这个问题。
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素,由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。放在会员注册、留言本等所有客户端提交信息的页面,要提交信息,必须要输入正确的验证码,从而可以防止不法用户用软件频繁注册,频繁发送不良信息等。
必须保证所有客户端交互部分都输入验证码,测试提交信息时不输入验证码,或者故意输入错误的验证码,如果信息都不能交,说明验证码有效,同时在验证码输入正确下提交信息,如果能提交,说明验证码功能已完善。
页:
[1]