2010年8月安全攻击及防范手册____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________版本1.011概概述述11..11简简介介当今世界,Internet(因特网)已经成为一个非常重要的基础平台,很多企业都将应用架设在该平台上,为客户提供更为方便、快捷的服务支持。这些应用在功能和性能上,都在不断的完善和提高,然而在非常重要的安全性上,却没有得到足够的重视。随着WEB技术应用的范围越来越广泛,WEB技术相关的安全漏洞越来越多的被挖掘出来,而针对WEB站点的攻击已经成为了最流行的攻击途径。不久前项目管理部对公司内外重点系统进行了一次安全隐患分析测试,并总结出了《公司安全测试问题分类及描述》的报告文档。本文针对此报告中提到的一些重大安全隐患问题逐一分析,并给出相应的解决方案。11..22参参考考资资料料《Java安全性编程实例》《网站系统安全开发手册》《企业级Java安全性(构建安全的J2EE应用)》22WWEEBB安安全全隐隐患患及及预预防防措措施施22..11会会话话标标识识未未更更新新22..11..11描描述述登陆过程前后会话标识的比较,显示它们并未更新,这表示有可能伪装用户。初步得知会话标识值后,远程攻击者有可能得以充当已登录的合法用户。22..11..22安安全全级级别别高。22..11..33安安全全风风险险可能会窃取或操纵客户会话和cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。22..11..44解解决决方方案案不要接受外部创建的会话标识。始终生成新的会话,供用户成功认证时登录。防止用户操纵会话标识。请勿接受用户浏览器登录时所提供的会话标识。如果有验证码的。验证码改用application存储。同时记得释放资源22..11..55技技术术实实现现登陆界面和登陆成功的界面一致时修改后台逻辑,在验证登陆逻辑的时候,先强制让当前session过期,然后用新的session存储信息。登陆界面和登陆成功的界面不一致时在登陆界面后增加下面一段代码,强制让系统session过期。request.getSession().invalidate();//清空sessionCookiecookie=request.getCookies()[0];//获取cookiecookie.setMaxAge(0);//让cookie过期注意:框架2.0已经修改了登陆验证类,登陆成功后会清理掉当前session,重新创建一个新的session。凡是使用框架2.0的项目均可统一增加此功能。22..22不不充充分分帐帐户户封封锁锁22..22..11描描述述程序没有使用锁定功能,可以穷举密码,可以造成蛮力攻击,恶意用户发送大量可能的密码和/或用户名以访问应用程序的尝试。由于该技术包含大量登录尝试,未限制允许的错误登录请求次数的应用程序很容易遭到这类攻击。22..22..22安安全全级级别别高。22..22..33安安全全风风险险可能会升级用户特权并通过Web应用程序获取管理许可权。22..22..44解解决决方方案案请确定允许的登录尝试次数(通常是3-5次),确保超出允许的尝试次数之后,便锁定帐户。为了避免真正的用户因帐户被锁定而致电支持人员的麻烦,可以仅临时性暂挂帐户活动,并在特定时间段之后启用帐户。帐户锁定大约10分钟,通常用这样的方法阻止蛮力攻击。22..22..55技技术术实实现现提供锁定信息配置类,可根据项目特定需求修改此配置信息。修改登陆验证逻辑,根据上面的配置信息提供帐户锁定功能。注意:框架2.0已经实现了此功能,凡是使用框架2.0的项目均可统一增加此功能。22..33可可预预测测的的登登录录凭凭证证22..33..11描描述述发现应用程序会使用可预期的认证凭证(例如:admin+admin、guest+guest)。攻击者很容易预测用户名和密码,登录应用程序,从而获取未获授权的特权。22..33..22安安全全级级别别高。22..33..33安安全全风风险险可能会升级用户特权并通过Web应用程序获取管理许可权。22..33..44解解决决方方案案不应使用易于预测的凭证(例如:admin+admin、guest+guest、test+test等),因为它们可能很容易预测,可让用户不当进入应用程序。22..33..55技技术术实实现现只要养成良好的习惯,坚决不使用容易预测的名和密码,即可彻底杜绝此类问题。22..44登登录录错错误误消消息息凭凭证证枚枚举举22..44..11描描述述当试图利用不正确的凭证来登录时,当用户输入无效的用户名和无效的密码时,应用程序会分别生成不同的错误消息。通过利用该行为,攻击者可以通过反复试验(蛮力攻击技术)来发现应用程序的有效用户名,再继续尝试发现相关联的密码。22..44..22安安全全级级别别高。22..44..33安安全全风风险险可能会升级用户特权并通过Web应用程序获取管理许可权。22..44..44解解决决方方案案不论名和密码哪个错误,都提示同样的消息。且同时加上登陆失败次数达到规定的帐户锁定功能。22..44..55技技术术实实现现不论名和密码哪个错误,都提示如下所示同样的消息:一旦某个帐户连续登陆失败次数达到了规定的数值,就会按配置的时间被锁定,如下提示:如此一来,攻击者就没机会穷举帐户和密码了,此类攻击也就不可能发生了!注意:框架2.0已经实现了此功能,凡是使用框架2.0的项目均可统一增加此功能。22..55已已解解密密的的登登录录请请求求22..55..11描描述述通过HTTPPOST发送表单数据,这些数据将在HTTP报文中以明文的形式传输。对于一些敏感的数据(如用户名/密码、信用卡密码)以传统的HTTP报文传输存在巨大的风险。22..55..22安安全全级级别别中。22..55..33安安全全风风险险可能会窃取诸如用户名和密码等未经加密即发送了的用户登录信息。22..55..44解解决决方方案案(1)饶过AppScan软件扫描(2)对提交的敏感信息,一律以加密方式传给服务器。(3)采用基于SSL的HTTPS传输协议,对提交的敏感信息在传输过程中加密。敏感信息包括:用户名、密码、社会保险号码、信用卡号码、驾照号码、电子邮件地址、电话号码、邮政编码等。注意:如果不是基于SSL的HTTPS传输协议的话。对于提交的敏感信息即使加密后,AppScan软件同样认为该漏洞存在。所以避免这一漏洞的有效方案是饶过扫描或者采用基于SSL的HTTPS传输协议。虽然采取HTTPS传输数据有很高的安全性,但是也有以下几个显著的缺点:需要申请一个合法组织颁发的用来加/解密的证书。部署、配置繁琐。同样的硬件环境,效率比HTTP慢很多。通过上述分析,采取基于SSL的HTTPS传输协议,付出的代价有点大,是否有必要这样做,值得深入讨论。:把text=password这个用其他的代替,就可以解决已解密的登录请求divli密 码:inputtype=textid=password1style=width:146px;height:18px;onkeypress=javascript:hiddenPass(event)onkeyup=this.value=this.value.replace(/./g,'*');/liliinputid=passwordtype=hiddenname=password/lidivjs代码functionhiddenPass(e){e=e?e:window.event;varkcode=e.which?e.which:e.keyCode;varpass=document.getElementById(password1);varj_pass=document.getElementById(password);if(kcode!=8){varkeychar=String.fromCharCode(kcode);j_pass.value=j_pass.value+keychar;j_pass.value=j_pass.value.substring(0,pass.length);}22..55..55技技术术实实现现(1)饶过AppScan软件扫描绕过软件扫描有两种方式,如下:修改密码输入框名字和类型经过不断扫描测试分