【专项测试】京东“安全测试”

                                            京东安全测试

         信息安全是互联网时代人们面临的严重威胁,首先来看看近几年比较著名的信息安全事件:

1、2011年12月,国内某程序员社区遭拖库,600万个账户信息泄露。

2、2014年3月,某旅游网站的系统存在技术漏洞,导致用户的姓名、身份证号码、银行卡类别、银行卡卡号、银行卡CVV码以及银行卡6位pin泄露。

3、2014年5月,某论坛涉及800万用户信息遭泄露,信息包括用户名、密码、注册IP、邮箱等。

4、2014年12月,某系统遭撞库攻击,13万用户信息泄露,包括用户账号、明文密码、身份证、邮箱等敏感信息。

5、2015年10月,某邮箱遭攻击,近5亿条用户信息被泄露,包括用户名、密码、密码保护信息、登录IP以及用户生日等多个原始信息。

        这些安全事件,也无疑将信息系统安全推至风口浪尖。京东商城作为一个知名的电子商务网站,面临着更加严重的信息安全的挑战。目前主要面临的安全威胁及其防治措施如下图所示:

 

【专项测试】京东“安全测试”_第1张图片 图24-7 主要的安全威胁及防治措施

一、SQL注入漏洞

       SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL注入的原理:

       SQL注入可以分为平台层注入和代码层注入。平台层注入是由于不安全的数据库配置或数据库平台的漏洞所致;代码层注入是由于程序员对输入未进行细致的过滤,从而执行了非法的数据查询。所以,SQL注入的产生原因通常表现在以下几方面:

不当的类型处理;

不安全的数据库配置;

不合理的查询集处理;

不当的错误处理;

转义字符处理不合适;

多个提交处理不当。

SQL注入的防护:

        为了保证数据库安全,减少SQL注入的影响,SQL注入防护可以从以下几个方面进行:

  •  不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对特殊字符进行转换。
  • 不使用动态拼装SQL语句,可以使用参数化的SQL语句或者直接使用存储过程进行数据查询存取。
  • 不使用管理员权限的数据库连接(例如MySQL的root,SQL Server的sa),为每个应用使用单独的权限,只授予有限的数据库连接权限。
  • 不把敏感信息直接存放,而是通过加密算法或者hash运算对敏感的信息进行处理。
  • 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,比如用户登录给出“用户名或密码错误”,而不是给出“用户名错误”、“密码错误”之类的错误提示。

       对于平台层SQL注入,这是运维部门安全运行管理的范畴,不在讨论范围之内。这里只讨论代码层的SQL注入,代码层SQL注入的防治,主要要求开发工程师在代码编写过程中注意前文提到的防治方法,在开发工程师提交代码后,对代码通过静态分析工具进行分析检测,再由安全工程师对代码进行安全分析,针对SQL语句进行分析。通过一些第三方工具对系统进行扫描,常见的第三方工具有JSky,Acunetix WVS等,可以发现一些安全威胁。 

二、防止XSS攻击

        跨站脚本漏洞是系统在处理用户可控数据时,没有对用户可控数据做相关验证或转义,导致用户可以对可控数据中插入恶意代码,并执行,导致对客户端造成攻击。XSS分为两大类,存储XSS和反射XSS,反射XSS主要是通过用户是URL中的参数来实现的,存储XSS是由于站点的一些form中没有对用户的输入进行判断,在显示用户输入时也没有进行转义操作,导致用户将一些恶意代码写入数据库中,每次用户访问都会看到。

跨站脚本漏洞风险主要在于,如果跨站脚本漏洞被恶意利用的话,将会产生如下的安全风险:

  • 盗取用户cookie,然后伪造用户身份登录,泄漏用户个人身份及用户订单信息。
  • 操控用户浏览器,借助其他漏洞可能导致对https加密信息的破解,导致登录传输存在安全风险。
  • 结合浏览器及其插件漏洞,下载病毒木马到浏览者的计算机上执行。
  • 修改页面内容,产生钓鱼攻击效果,例如伪造登录框获取用户明文帐号密码。

        XSS安全漏洞的扫描可以通过一些第三方工具(如Acunetix WVS等)来进行,自动检测工具可能会误报的情况,如果对扫描结果不确定是否存在XSS,可以通过Chrome浏览器加载一个XssSniper插件进行检测。

 

【专项测试】京东“安全测试”_第2张图片 图24-8 Chrome中XssSniper插件

 

       在目标列表中输入索要测试的站点的列表,列表中支持通配符。编辑Payload列表,目的在于能够根据现实的结果来判定出发的Payload项,如果不编辑也可以。开启Fuzz,在浏览器的URL栏输入要访问的地址,等待结果即可。如果被访问的URL含有XSS,会有一个弹窗显示。

 

【专项测试】京东“安全测试”_第3张图片 图24-9 XssSniper的配置选项

三、Struts 2安全防护

        Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts1设计的第一目标就是使MVC模式应用于web程序设计。但由于这个架构的一些先天不足,经常会爆出一些致命的安全漏洞,并且Struts2开发组常被指漏洞修复手法不妥,要么修复后仍有可利用,要么无法修复并长期闲置。

       京东有很多系统采用struts2架构,所以时常关注Struts2的安全,京东特别针对struts2 的安全漏洞,开发了全新的安全补丁。为了避免strut2的后患,京东安全信息部倡导各部门逐渐用Spring架构取代struts2,各个研发部门已经开始实施,随着时间的推移,struts2将会被彻底预防。

你可能感兴趣的:(测试,京东安全测试,安全测试,SQL注入漏洞,防止XSS攻击,Struts,2)