`
yangzb
  • 浏览: 3507044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在网站测试中如何做好安全性测试?

阅读更多

 软件测试每周一问:随着网络发展的趋势,对于网站的安全性的要求也越来越高,很多网站都存在被黑客攻击的漏洞,你在网站测试中有做到安全性测试吗?你觉得安全测试应该从哪些方面来检查?欢迎大家讨论交流!

  会员卖烧烤的鱼的精彩回答:

  安全性测试(security testing)是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。

  注意:安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。

  以下是我读<<软件评测试教程>>中的Web安全性测试章节内容,并进行修改的笔记,前面看了好多朋友写的,不过不是很全,希望对大家有所帮助,建议大家还是买本<<软件评测试教程>>此书绝对物超所值^_^

WEB安全性测试
  一个完整的WEB安全性测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密。参数操作、异常管理、审核和日志记录等几个方面入手。
1.        安全体系测试
1)        部署与基础结构
  网络是否提供了安全的通信
  部署拓扑结构是否包括内部的防火墙
  部署拓扑结构中是否包括远程应用程序服务器
  基础结构安全性需求的限制是什么
  目标环境支持怎样的信任级别
2)        输入验证
l        如何验证输入
A.        是否清楚入口点
B.        是否清楚信任边界
C.        是否验证Web页输入
D.        是否对传递到组件或Web服务的参数进行验证
E.        是否验证从数据库中检索的数据
F.        是否将方法集中起来
G.        是否依赖客户端的验证
H.       应用程序是否易受SQL注入攻击
I.        应用程序是否易受XSS攻击
l        如何处理输入
3)        身份验证
  是否区分公共访问和受限访问
  是否明确服务帐户要求
  如何验证调用者身份
  如何验证数据库的身份
  是否强制试用帐户管理措施
4)        授权
  如何向最终用户授权
  如何在数据库中授权应用程序
  如何将访问限定于系统级资源
5)        配置管理
  是否支持远程管理
  是否保证配置存储的安全
  是否隔离管理员特权
6)        敏感数据
  是否存储机密信息
  如何存储敏感数据
  是否在网络中传递敏感数据
  是否记录敏感数据
7)        会话管理
  如何交换会话标识符
  是否限制会话生存期
  如何确保会话存储状态的安全
8)        加密
  为何使用特定的算法
  如何确保加密密钥的安全性
9)        参数操作
  是否验证所有的输入参数
  是否在参数过程中传递敏感数据
  是否为了安全问题而使用HTTP头数据
10)        异常管理
  是否使用结构化的异常处理
  是否向客户端公开了太多的信息
11)        审核和日志记录
  是否明确了要审核的活动
  是否考虑如何流动原始调用这身份
2.        应用及传输安全
  WEB应用系统的安全性从使用角度可以分为应用级的安全与传输级的安全,安全性测试也可以从这两方面入手。
  应用级的安全测试的主要目的是查找Web系统自身程序设计中存在的安全隐患,主要测试区域如下。
  注册与登陆:现在的Web应用系统基本采用先注册,后登录的方式。
A.        必须测试有效和无效的用户名和密码
B.        要注意是否存在大小写敏感,
C.        可以尝试多少次的限制
D.        是否可以不登录而直接浏览某个页面等。
  在线超时:Web应用系统是否有超时的限制,也就是说,用户登陆一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
  操作留痕:为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进入了日志文件,是否可追踪。
  备份与恢复:为了防范系统的意外崩溃造成的数据丢失,备份与恢复手段是一个Web系统的必备功能。备份与恢复根据Web系统对安全性的要求可以采用多 种手段,如数据库增量备份、数据库完全备份、系统完全备份等。出于更高的安全性要求,某些实时系统经常会采用双机热备或多级热备。除了对于这些备份与恢复 方式进行验证测试以外,还要评估这种备份与恢复方式是否满足Web系统的安全性需求。
  传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力。一般测试项目包括以下几个方面。
  HTTPS和SSL测试:默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP。HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,但从某种意义上来说,安全性的保证 是以损失性能为代价的。除了还要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求。
  服务器端的脚本漏洞检查:存在于服务器端的脚本常常构成安全漏洞,这些漏洞又往往被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
  防火墙测试:防火墙是一种主要用于防护非法访问的路由器,在Web系统中是很常用的一种安全系统。防火墙测试是一个很大很专业的课题。这里所涉及的只是对防火墙功能、设置进行测试,以判断本Web系统的安全需求。

另推荐安全性测试工具:
  Watchfire AppScan:商业网页漏洞扫描器(此工具好像被IBM收购了,所以推荐在第一位)
  AppScan按照应用程序开发生命周期进行安全测试,早在开发阶段就进行单元测试和安全保证。Appscan能够扫描多种常见漏洞,例如跨网站脚本、HTTP应答切开、参数篡改、隐藏值篡改、后门/调试选项和缓冲区溢出等等。


  Acunetix Web Vulnerability Scanner:商业漏洞扫描器(目前用的比较多,不过这东东N占内存)
Acunetix WVS自动检查您的网页程序漏洞,例如SQL注入、跨网站脚本和验证页面弱密码破解。Acunetix WVS有着非常友好的用户界面,还可以生成个性化的网站安全评估报告。

  另附我以前在51testing上发过“Yeepay网站安全测试漏洞之跨站脚本注入”
http://bbs.51testing.com/thread-113784-1-1.html
  Sql注入和跨站脚本这种漏洞比较常见,另在支付宝网站注册页面也存在跨站脚本情况,希望能早点发现^_^


分享到:
评论

相关推荐

    做好安全测试的整套方法和建议

    安全性测试的目的在于预防并识别软件在遭受攻击前可能出现的安全问题。 值得注意的是,安全性测试无法完全证明应用程序是绝对安全的,而是用来验证已设定的安全策略的有效性。这些策略基于威胁分析阶段的假设进行...

    互联网 背景下的手机APP安全性测试研究.pdf

    此外,做好APP安全性测试还需要开发团队与安全专家的紧密合作,建立完善的测试流程,定期进行安全审计,并及时跟进安全漏洞的修复。同时,开发者应采用安全编码的最佳实践,减少潜在的安全风险。 参考文献和专业...

    如何做好软件安全测试.doc

    安全性测试并不保证软件绝对安全,而是验证所采取的安全策略的有效性,例如防止未授权访问和恶意破坏。 常见的【安全性测试方法】包括: 1. **静态代码安全测试**:通过扫描源代码,根据安全规则库检测潜在安全...

    如何做好软件安全测试参照.pdf

    对于安全要求较高的软件,专门的安全性测试至关重要,因为它能够在问题发生前预防和识别安全隐患。测试的目标不是绝对证明软件安全,而是验证设定的安全策略有效性,例如,检查软件抵御非法入侵的能力。 在安全测试...

    如何做好软件测试

    5. **安全性测试**:随着网络安全威胁日益严峻,确保软件的安全性变得尤为重要。 #### 四、有效沟通与团队协作 1. **会议纪要**:正如文中提到的“做好会议纪要”,这一步骤对于确保所有团队成员对项目的理解一致...

    软件测试期末考试复习资料.zip

    2. 非功能性测试:关注软件的性能、安全性、兼容性、可维护性等方面。例如压力测试、安全测试、兼容性测试等。 3. 回归测试:在修改或新增功能后,对软件进行重新测试,以确保原有功能未受影响。 4. 验收测试(用户...

    (word完整版)如何做好软件安全测试.doc

    安全性测试不是证明软件绝对安全,而是验证所采取的安全策略是否有效,以抵御各种内部或外部的非授权访问和破坏尝试。 3. **安全性测试方法** - **静态代码安全测试**:通过扫描源代码,对比安全规则库,找出设计...

    软件开发者测试练习题.zip

    这可能包括兼容性测试(如操作系统、浏览器、设备等)、性能测试(如压力测试、负载测试)、安全性测试(如渗透测试、安全漏洞扫描)等。 六、自动化测试 随着软件复杂性的增加,自动化测试变得越来越重要。练习题...

    BackTrack 4:利用渗透测试保证系统安全

    BackTrack 4通过模拟黑客攻击行为,帮助企业发现并修复系统中存在的安全漏洞,从而提升整体的信息安全性。 #### 二、环境准备与测试流程 在进行渗透测试前,需要做好充分的准备工作。这包括但不限于: - **环境...

    告诉你怎么做软件测试,以及如何做好软件测试

    这包括功能测试、性能测试、安全测试、兼容性测试等多个方面。例如,LoadRunner和JMeter可用于性能测试,以评估系统在高负载下的表现。 4. **验收测试**:也称为用户接受测试,这一阶段由最终用户或代表用户的团队...

    《渗透测试授权书》.doc

    《渗透测试授权书》是甲乙双方在进行渗透测试前签订的重要法律文件,它规定了双方在测试过程中的权利和责任,确保测试的合法性和安全性。渗透测试是一种模拟黑客攻击的技术手段,用于评估计算机网络、系统和应用程序...

    网站压力测试

    3. **稳定性测试**:检查网站在长时间高负载下的表现,观察是否有崩溃或性能下降的情况。 4. **资源消耗分析**:了解服务器、数据库和其他组件在高负载下的资源使用情况,以便优化配置。 5. **故障恢复**:测试系统...

    软件测试之功能测试(包括测试模板、用例和测试原理技术)

    在软件开发过程中,功能测试是不可或缺的一环,它主要关注软件的各项功能是否按照预期正常工作。下面我们将深入探讨功能测试的各个方面,包括测试模板、用例设计、测试原理和技术,以及相关的软件测试流程和案例。 ...

    华为软件测试笔试题

    回答:系统测试的策略包括功能测试、性能测试、可靠性测试、负载测试、易用性测试、强度测试、安全测试、配置测试、安装测试、卸载测试、文挡测试、故障恢复测试、界面测试、容量测试和兼容性测试等。 3. 设计系统...

    软件测试人员面试考题

    他们可能在特定领域如自动化测试、性能测试或安全性测试等方面具有专长。 3. **软件测试类型及其区别与联系** - 功能测试:验证软件是否符合其规格说明,确保所有功能都能正常工作。 - 性能测试:评估软件在不同...

    软件测试经典面试题 (超实用)

    - **安全性测试**:确保软件能够抵御恶意攻击。 - **可用性测试**:关注用户体验,确保软件易于使用。 - **兼容性测试**:如上所述。 - **回归测试**:修改后重新测试以确认未引入新问题。 #### 4. 正交表测试...

    软件测试之测试计划.pdf

    2. **兼容性测试**: - 确定需要覆盖的浏览器类型、版本以及移动设备型号。 - 参考产品历史数据或市场趋势来确定测试覆盖范围。 3. **性能测试**: - 明确性能测试的目标(例如并发用户数、响应时间等)。 - ...

    2023年软件测试经典面试题总结.doc

    * 按测试类型可以分为:黑盒/白盒测试、静态/动态测试、手工/自动化测试、功能/性能测试、安全性测试、可靠性测试、界面测试、强度测试、压力测试、负载测试、容量测试、稳定性测试、兼容性测试、Beta/a 测试等。...

Global site tag (gtag.js) - Google Analytics