网站建设的安全问题分析
新疆二域设计提醒客户在建设网站和使用网站一定要注意考虑网站的安全性的问题。
网站的安全主要包括物理的安全和网站运行支撑软件本身的安全。
物理安全是指系统机器及其外设不遭受各种物理破坏,如被盗、遭火灾、水灾等;支撑软件本身的安全是指网络操作系统、web服务器系统及数据库系统本身的安全,此类安全用户是无能为力的,只有及时安装厂家发布的安全补丁程序。
其二,对于网站程序自身的安全,应该从以下几个方面考虑。
(1)不信任原则
对网站程序来讲,访问网站的用户都是不被信任的,他们当中就隐藏着攻击者。所有用户的输入都应该检查。合法的输入才可以进入流程,这样就可以最大限度的保证程序的安全。
(2)输入检查原则
从目前的网站程序来看,用户的输入分为文本型和二进制型。对于文本型输入,如果要进行检查,就得根据字段本身的性质进行,如邮编必须限制为六位数字,身份证号码必须符合身份证号码的编码规则等。
需要说明的是,为了进一步提高网站的安全性,应该采用前后数据检查相结合的方法来完成程序对输入数据的检查,避免用以前采用的只在前台通过客户端脚本完成数据检查的做法,因为原来的做法攻击者和容易绕过检查程序 ,如SQL注入攻击等。
(3)用户最小权限原则
访问网站的用户有什么样的权限,要根据网站的性质和需要客户做什么来决定,但是有一个基本的原则,就是服务器的安全性。对于访问网站的用户,尽量规范他们可以输入的内容,限制并过滤输入的非法信息,尤其是要严禁上传非法文件。
(4)程序运行最小权限原则
网页有静态与动态之分,对于没有服务器端程序的页面应该保存为静态页面,这样可以减少程序的执行时间,有利于提高服务器效率。同时可以保证程序的安全性。
网站程序跟服务器应当尽可能的减少耦合,杜绝网站中使用绝对路劲等情况。另外,对于目录的权限也应该做出规定,比如存放上传文件的目录,在绝大多数情况下式不应该有执行权限的。
(5)组件安全性原则
要使用网站功能强大,必然要使用组件,组件在带来强大的功能的同时也带来了安全隐患。对于内置组件的使用,应当有明确的使用范围;对于自己注册的组件,必须认真考虑组件的效率和是否有溢出漏洞。
(6)程序错误处理原则
从严格意义上讲,测试是不可能发现所有问题的。在设计阶段,出错设计就是保证程序安全性的一个重要环节。如果一个程序能处理所有错误,那么它就有非常高的安全性。
在技术层面如何提高网站的安全性?
使用安全的数据库技术
目前主流的数据库技术包括 MS SQL Server, Oracle, IBM DB2, MySQL, PostgreSQL,其中 MySQL 和 PostgreSQL 属于开源数据库,其它三种数据库根据不同许可方式有不同的价格。考虑到安全,它们都是非常安全的数据库技术,需要注意的是,我们并不建议采用 Access,首先 Access 是一种桌面数据库,并不适合可能面临海量访问的企业网站,其次,Access 是一种非常不安全的网站数据库,如果您的 Access 数据库文件的路径被获取,人们很容易将这个数据库文件下载下来并看到数据库内的一切内容,包括需要授权才能看到的内容。如果您选择 Access 的原因是因为它免费,您需要知道 MSDE 也是免费的。
用户密码或其它机密数据必须用成熟加密技术加密后再存放到数据库
使用明文在数据库中存储用户密码,信用卡号等数据是非常危险的,即使您使用的是非常安全的数据库技术,仍然要非常谨慎,任何机密数据都应该加密存储,这样即使您的数据库被攻破,那些重要的机密数据仍然是安全的。我们使用MD5、DES等较为成熟的数据加密技术来对密码、信用卡账号等涉及私人信息的数据进行合理加密。
密码或其它机密数据必须用成熟加密技术加密后才能通过表单传递
如果您的网站没有使用 HTTPS 加密技术,那您的网站服务器和访问客户之间的所有数据都是以明文传输的,这些数据很容易在交换机和路由器节点的位置被截获,如果您无法部署 HTTPS,将所有机密数据加密后再通过网络传播是非常有效的办法
密码或其它机密数据必须用成熟加密技术加密后才能写入 Cookie
很多网站将用户帐户信息写到 Cookie 中,以便用户下次访问时可以直接登陆。如果用户帐户信息未经加密直接写到 Cookie 中,这些数据很容易通过查看 Cookie 文件获得,尤其当您的用户是和别人共用电脑的时候。
防止SQL注入
我们存储过程来而不是sql语句拼接来相应用户的查询,存储过程将每个输入的参数认作字符串来进行传递,另外我们在页面中将一些危险字符过滤掉,有效的避免sql注入的危害。
防止JavaScript注入
如果网站中存在用户的提交文字输入的功能,则很网站很可能收到JavaScript注入的风险,即用户如果没有提交正确的文字内容而提交了一段JavaScript代码进入数据库,当页面再次显示用户提交的这些内容时,这些代码很可能会产生危机浏览用户的恶意程序。我们在检测用户的文字内容提交的时候将会检测JavaScript代码的必备字段从而将其过滤,对于危险字符也会将其替换或者过滤。
对于不恰当言论的处理
如果用户的输入中存在有关*治方面的不恰当言论,那么将会给其他浏览者带来误导对网站产生很大影响。然而在用户提交这些言论时检测其中的词语,如果发现这些不恰当言论则不予以提交或者用符号代替,能有效得避免这种危害。我们在防着这种危害上面可以由管理员自行设置这些被禁掉的词语。
网站必须有安全备份和恢复机制
任何网站都可能发生硬件或软件灾难,导致您的网站丢失数据,您必须根据您网站的规模和更新周期,定期对网站进行安全备份,在灾难性事故发生以后,您的备份恢复机制需要在很短的时间内将整个网站恢复。需要注意的是,您一定要对您的备份恢复机制进行测试,保证您的备份数据是正确的。
网站的错误信息必须经过处理后再输出
错误消息常常包含非常可怕的技术细节,帮助黑客攻破您的网站,您应当对网站底层程序的错误消息进行处理,防止那些调试信息,技术细节暴露给普通访问者。
下一篇:网站有流量没有订单的原因