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