安全测试及B/S C/S安全性比较
一、用户认证安全的测试要考虑问题:
1. 明确区分系统中不同用户权限
2. 系统中会不会出现用户冲突
3. 系统会不会因用户的权限的改变造成混乱
4. 用户登陆密码是否是可见、可复制
5. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
6. 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
7. 登陆失败次数的限制,防止暴力破解
8. 输入的账户密码不能有含特殊意义的符号或命令语句
9. 设置新密码之后,旧密码是否有效
10. cookie中是否保存用户名密码,如果保存要加密
11. 防止SQL注入
12. 密码不能明文传输
13. 日志和数据库中是否记录明文密码
14. 网页出错时,不泄露敏感资料
15 页面超时机制的验证
二、系统网络安全的测试要考虑问题:
1. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
2. 模拟非授权攻击,看防护系统是否坚固
3. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是NBSI系列和IPhacker IP)
4. 采用各种木马检查工具检查系统木马情况
5. 采用各种防外挂工具检查系统各组程序的客外挂漏洞
三、数据库安全考虑问题:
1. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
2. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
3. 系统数据可管理性
4. 系统数据的独立性
5. 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
B/S与C/S安全性比较
很多用户在提到B/S架构设计的系统后, 第一个疑惑就是,.这个软件安全吗?为什么用户会有这样的疑惑,因为B/S架构放在internet上后,只要有IE浏览器的电脑都可以访问这个系统.而C/S架构只有安装了特定Client软件的用户才可以使用本系统,所以一直以来我们的用户都在担心着B/S的安全问题.而业内一些C/S的支持者也一直把B/S的安全问题作为一个不休的话题一直在讨论着.只能说这样的讨论非常无聊,我并不反对C/S有很多优点.但是从安全角度分析,B/S远远高于C/S.
1 前面我们讲到"C/S架构只有安装了特定Client软件的用户才可以使用本系统",正因为在用户的电脑上安装了Client所以这个系统就面临着程序被分析,数据被截取的安全隐患,因为所有的数据必须从SERVER读到CLIENT然后进行操作,而B/S所有的数据操作全部在SERVER上进行在CLIENT只是POST一个HTML代码.
2 目前很多传统的C/S系统还是采用2层结构也就是说所有的CLIENT直接读取SERVER中的数据,在CLIENT端包括了数据的用户名\密码等致命的信息,难道这样的系统安全吗?如果这样的系统放在INTERNET上,那么这个SERVER面向任何连接上INTERNET的用户都是开放的,而B/S架构的系统,在CLIENT上没有任何信息.面向用户开放的也只是WEBSERBER,而真正保存我们数据的信息全部在DATASERVER上,这个DATASERVER完全可以不放在INTERNET上,也只能让我们指定的WEBSERVER来访问.
3 当然现在也流行一种3层架构的C/S系统,但是我想问的是,你做的中间件要比microsoft 写的iis 更安全吗?目前有很多截数据包分析的各种手段,bs 可以使用https 加密来解决。但是你的C/S 服务器有考虑过这问题吗?你说你加密了数据,你加密的比https 还好吗? 你没有加密,那就是明文的,随便找一个sniff 监听软件就可以把数据截下来。
还有一个观点:B/S不如C/S
C/S:可以使用多种网络协议,甚至可以自定义协议,从这个角度来看,C/S的安全性是有保障的。又因为它是基于客服端的,不容易被病毒攻击,但C/S太不方便(主要是不便于数据共享)不便于随时与用户交流,这也是C/S的一个致命缺点。并且C/S结构软件在保护数据的安全性方面有着先天的弊端。由于C/S结构软件的数据分布特性,客户端所发生的火灾、盗抢、地震、病毒等都将成为可怕的数据杀手。
B/S:B/S相对C/S而言更容易被病毒光顾,使用http协议,虽然最新的https协议在安全性方面有所提升,但还是弱于C/S。
对比之后,觉得这是无谓之争。。。先扫门前雪,把自己的产品安全性高最重要。
B/S与C/S安全测试重点比较
B/S结构
一般的B/S结构,都是多层架构的,有界面层、业务逻辑层、数据层。由于这种结构不需要客户端的安装,客户端主要通过浏览器来访问,因此客户端测试的重点是:客户端浏览器(不同类型和版本)以及客户端配置(cookie设置和分辨率设置)等测试。除客户端测试外,根据WEB系统常用技术还需要关注以下几个方面的测试:
(1)链接测试
(2)表单测试
(3)脚本测试
(4)ActiveX控件测试
C/S(Client/Server)结构
即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。这种结构与B/S最显著的区别是需要安装客户端,通过客户端程序来访问应用系统,因此C/S客户端测试是重点,并且与B/S结构有所不同。
C/S客户端测试的重点有:
(1)客户端安装测试
Ø 安装手册的评估
Ø 安装的自动化程度
Ø 安装选项和设置得测试
Ø 安装过程的中断测试
Ø 安装顺序测试
Ø 多环境安装测试
Ø 安装的正确性测试
Ø 修复安装测试
Ø 卸载安装测试
(2)客户端升级测试
Ø 与变更相关的测试
Ø 变更内容的测试
(3)客户端与服务器链接测试
(4)服务器端数据验证
(5)客户端可维护性测试