论文部分内容阅读
摘要:由于安全设计不足,账号注册、账号登录、权限验证等WEB账号管理功能往往造成信息泄露、暴力破解、平行权限等威胁。文章针对这些威胁进行了分析并介绍了相应的安全开发思路与方法。
关键词:WEB账号管理;账号注册安全设计;账号登录及权限验证设计
1 引言
近年来,随着互联网技术的发展,以及近期“互联网+”概念的提出,越来越多传统行业融合互联网发展新形态、新业态,如今许多企业的业务开展都离不开WEB应用系统,WEB应用系统也成了黑客的重点攻击对象。据Gartner的数据表明,当前网络上75%的攻击是针对wEB应用。
在WEB功能安全开发中,由于Web账号管理功能安全设计不足引起的安全事件不仅有上升趋势,而且影响面越来越广,比如携程网站的用户信息泄露事件、CSDN用户名密码泄露事件等。为了避免WEB账号管理功能安全设计不足而导致黑客入侵,本文从威胁角度分析WEB账号管理功能安全设计不足而导致相关的风险,同时介绍了相应的安全开发思路与方法。
2 账号注册安全设计
由于账号注册功能安全设计不足导致的风险,主要有信息泄露、弱口令及恶意注册。
2.1 用户信息泄露威胁分析
用户注册时除了需要填写用户名、密码,如今许多网站也要求填写用户隐私信息,比如手机号码、邮箱、密保问题等。如果大量的用户信息被不法分子获取,可能导致引发一系列的社会问题:诈骗分子从非法渠道拿到了泄露的用户信息后导致电信诈骗更加精准化,会采用有针对性的诈骗电话和短信,以提高诈骗成功率。因此获取这些用户账号密码、隐私信息也成了黑客入侵网站主要的动机之一,导致近几年用户信息泄露案件频发。比如CSDN、猫扑、天涯、小米论坛等用户密码泄露事件,由于这些网站采用明文存储密码,黑客入侵这些网站后导致上千万用户的密码被直接泄露。
2.2 弱口令威胁分析
注册阶段安全设计考虑不足容易引发另一个安全问题:弱口令。目前还有许多wEB系统没有对口令复杂度作强制要求,极易被黑客猜测到密码或者暴力破解。在国内知名漏洞发布平台乌云上,与弱口令相关的漏洞有5000多个,其中不乏一些大型的互联网行业或者金融行业的公司网站存在该问题。
2.3 用户密码泄露防范
如今密码加密常用的方式是将密码进行哈希得到散列值,但黑客如果获得了密码散列值,然后通过查散列值字典(例如MD5密码破解网站),便可以得到某用户的密码。给密码加Salt可以一定程度上解决这一问题。
所谓加Salt方法,就是加点“佐料”。这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便黑客获取到了用户密码,因为不知道salt值,无法通过查散列值字典,还原真实密码。
2.4 用户信息泄露防范
由于“用户信息”需要显示真实内容,只能采用加密技术(如3DES、AES等)。可如果对用户信息采取加密存储,不仅会降低网站处理性能,容易被黑客通过不断查询用户信息形成DDoS攻击,而且难以对用户信息进行检索,以上也是为什么许多大型网站甚至网上银行没有对用户信息进行加密的原因。
为了防止黑客入侵网站从而获取用户信息,建议采用站库分离架构,黑客如果控制了网站服务器,也无法直接导出数据库,提高黑客攻击的难度。此外,无论是否采用站库分离架构黑客均可利用SQL注入漏洞直接获取网站数据库信息,建议采用参数化查询方式防止SQL注入。
2.5 弱口令校验
安全工作应未雨绸缪,防范于未然。在用户注册时便应校验口令复杂度,避免存在弱口令,提高黑客暴力破解的难度。目前许多监管部门都对于口令复杂度提出了具体的要求,比如在设计弱口令校验时,可参照工信部关于口令复杂度要求:口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
3 账号登录及权限验证安全设计
由于账号登录及权限验证功能安全设计不足导致的风险主要有平行权限、身份伪造及暴力破解。
3.1 平行权限威胁分析
平行权限漏洞是指不同用户之间可以越权访问或操作对方的数据,由于没有验证访问权限,用户资料对于所有用户都是可访问的(即“平行权限”),因此用户A可以越权访问用户B资料。
3.2 暴力破解威胁分析
登录的过程就是验证用户的过程,目前许多网站普遍通过密码的私密性来区分用户。这个环节常见的攻击行为暴力破解,当前暴力破解主要有两种方式:
3.2.1 字典型或者穷举型暴力破解
字典型或者穷举型暴力破解是传统的暴力破解方式,主要是通过加载含有大量用户或者密码的字典表,或者穷举所有用户或者密码可能性,对目标网站发动暴力破解攻击。它的主要特征是在某一IP范围内,对某一注册名存在大量登录尝试。
3.2.2 撞库暴力破解
因为人懒惰的天性决定在不同的服务商使用相同的注册名和密码,如果某大型服务商被“拖库”,亦即利用漏洞获取包括用户账号、密码等数据库内保存的各类数据,攻击者就可以利用这些数据在其它网站系统上尝试登录,找出有效注册名及密码,此行为也称为“撞库”。此攻击的主要特征是某一IP范围内,有大量的注册名登录行为。
3.3 平行权限漏洞防范
首先,对每一个来自于不信任的源的直接对象引用都必须包含访问控制检查,从而确信该用户对该对象拥有访问权。
其次,由于攻击者是通过更改访问参数,从而访问到了原本并没有得到授权的对象。因此可以将参数映射成特殊数字或者字符串,使攻击者无法遍历参数获取用户信息。数字和字符串生成可以结合用户信息进行生成,使得攻击者难以猜测生成的方式。
3.4 暴力破解防范
防范暴力破解,可从增强口令复杂度、定期变更密码和填写验证码这几方面着手。
3.4.1 增强口令复杂度与定期变更密码
对于字典型或者穷举型暴力破解的防范,主要的措施是在账号注册时增加口令复杂度检验,对于复杂程度低的口令不予通过注册;为了缓解撞库类型的暴力破解,可增加“定期变更密码”提示,若安全性要求较高的系统(比如等保三级系统),应强制90天内变更密码。
3.4.2 填写验证码
验证码作为区分人与机器(脚本自动化)的一道重要屏障,同样可以提高黑客实施暴力破解的难度。为了避免影响用户体验,折中的方法可以判断用户短时间内尝试登录失败三次以后,再增加验证码输入环节。
4 结语
WEB应用系统的安全开发需要在设计阶段便开始考虑,若前期安全设计不足而导致运行阶段安全事件的发生,则需要重新对应用系统进行修补,如果此时维护应用系统的不是当时的开发人员,或者开发人员因为时间久了对系统源码不熟悉,又要花费大量的时间去读懂源码并整改,大大提高了修复成本。
文章从威胁角度分析WEB账号管理功能安全设计不足而导致相关的风险,同时介绍了相应的安全开发思路与方法,不仅可提高开发人员的安全意识,而且扩展了开发人员关于WEB账号管理安全编码的思路。可帮助安全开发员在设计阶段便考虑WEB账号管理功能相关的安全设计,将“安全尽量往前移”,不仅可预防相关的安全事件的发生,而且可降低后期应用系统的维护成本。
关键词:WEB账号管理;账号注册安全设计;账号登录及权限验证设计
1 引言
近年来,随着互联网技术的发展,以及近期“互联网+”概念的提出,越来越多传统行业融合互联网发展新形态、新业态,如今许多企业的业务开展都离不开WEB应用系统,WEB应用系统也成了黑客的重点攻击对象。据Gartner的数据表明,当前网络上75%的攻击是针对wEB应用。
在WEB功能安全开发中,由于Web账号管理功能安全设计不足引起的安全事件不仅有上升趋势,而且影响面越来越广,比如携程网站的用户信息泄露事件、CSDN用户名密码泄露事件等。为了避免WEB账号管理功能安全设计不足而导致黑客入侵,本文从威胁角度分析WEB账号管理功能安全设计不足而导致相关的风险,同时介绍了相应的安全开发思路与方法。
2 账号注册安全设计
由于账号注册功能安全设计不足导致的风险,主要有信息泄露、弱口令及恶意注册。
2.1 用户信息泄露威胁分析
用户注册时除了需要填写用户名、密码,如今许多网站也要求填写用户隐私信息,比如手机号码、邮箱、密保问题等。如果大量的用户信息被不法分子获取,可能导致引发一系列的社会问题:诈骗分子从非法渠道拿到了泄露的用户信息后导致电信诈骗更加精准化,会采用有针对性的诈骗电话和短信,以提高诈骗成功率。因此获取这些用户账号密码、隐私信息也成了黑客入侵网站主要的动机之一,导致近几年用户信息泄露案件频发。比如CSDN、猫扑、天涯、小米论坛等用户密码泄露事件,由于这些网站采用明文存储密码,黑客入侵这些网站后导致上千万用户的密码被直接泄露。
2.2 弱口令威胁分析
注册阶段安全设计考虑不足容易引发另一个安全问题:弱口令。目前还有许多wEB系统没有对口令复杂度作强制要求,极易被黑客猜测到密码或者暴力破解。在国内知名漏洞发布平台乌云上,与弱口令相关的漏洞有5000多个,其中不乏一些大型的互联网行业或者金融行业的公司网站存在该问题。
2.3 用户密码泄露防范
如今密码加密常用的方式是将密码进行哈希得到散列值,但黑客如果获得了密码散列值,然后通过查散列值字典(例如MD5密码破解网站),便可以得到某用户的密码。给密码加Salt可以一定程度上解决这一问题。
所谓加Salt方法,就是加点“佐料”。这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便黑客获取到了用户密码,因为不知道salt值,无法通过查散列值字典,还原真实密码。
2.4 用户信息泄露防范
由于“用户信息”需要显示真实内容,只能采用加密技术(如3DES、AES等)。可如果对用户信息采取加密存储,不仅会降低网站处理性能,容易被黑客通过不断查询用户信息形成DDoS攻击,而且难以对用户信息进行检索,以上也是为什么许多大型网站甚至网上银行没有对用户信息进行加密的原因。
为了防止黑客入侵网站从而获取用户信息,建议采用站库分离架构,黑客如果控制了网站服务器,也无法直接导出数据库,提高黑客攻击的难度。此外,无论是否采用站库分离架构黑客均可利用SQL注入漏洞直接获取网站数据库信息,建议采用参数化查询方式防止SQL注入。
2.5 弱口令校验
安全工作应未雨绸缪,防范于未然。在用户注册时便应校验口令复杂度,避免存在弱口令,提高黑客暴力破解的难度。目前许多监管部门都对于口令复杂度提出了具体的要求,比如在设计弱口令校验时,可参照工信部关于口令复杂度要求:口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
3 账号登录及权限验证安全设计
由于账号登录及权限验证功能安全设计不足导致的风险主要有平行权限、身份伪造及暴力破解。
3.1 平行权限威胁分析
平行权限漏洞是指不同用户之间可以越权访问或操作对方的数据,由于没有验证访问权限,用户资料对于所有用户都是可访问的(即“平行权限”),因此用户A可以越权访问用户B资料。
3.2 暴力破解威胁分析
登录的过程就是验证用户的过程,目前许多网站普遍通过密码的私密性来区分用户。这个环节常见的攻击行为暴力破解,当前暴力破解主要有两种方式:
3.2.1 字典型或者穷举型暴力破解
字典型或者穷举型暴力破解是传统的暴力破解方式,主要是通过加载含有大量用户或者密码的字典表,或者穷举所有用户或者密码可能性,对目标网站发动暴力破解攻击。它的主要特征是在某一IP范围内,对某一注册名存在大量登录尝试。
3.2.2 撞库暴力破解
因为人懒惰的天性决定在不同的服务商使用相同的注册名和密码,如果某大型服务商被“拖库”,亦即利用漏洞获取包括用户账号、密码等数据库内保存的各类数据,攻击者就可以利用这些数据在其它网站系统上尝试登录,找出有效注册名及密码,此行为也称为“撞库”。此攻击的主要特征是某一IP范围内,有大量的注册名登录行为。
3.3 平行权限漏洞防范
首先,对每一个来自于不信任的源的直接对象引用都必须包含访问控制检查,从而确信该用户对该对象拥有访问权。
其次,由于攻击者是通过更改访问参数,从而访问到了原本并没有得到授权的对象。因此可以将参数映射成特殊数字或者字符串,使攻击者无法遍历参数获取用户信息。数字和字符串生成可以结合用户信息进行生成,使得攻击者难以猜测生成的方式。
3.4 暴力破解防范
防范暴力破解,可从增强口令复杂度、定期变更密码和填写验证码这几方面着手。
3.4.1 增强口令复杂度与定期变更密码
对于字典型或者穷举型暴力破解的防范,主要的措施是在账号注册时增加口令复杂度检验,对于复杂程度低的口令不予通过注册;为了缓解撞库类型的暴力破解,可增加“定期变更密码”提示,若安全性要求较高的系统(比如等保三级系统),应强制90天内变更密码。
3.4.2 填写验证码
验证码作为区分人与机器(脚本自动化)的一道重要屏障,同样可以提高黑客实施暴力破解的难度。为了避免影响用户体验,折中的方法可以判断用户短时间内尝试登录失败三次以后,再增加验证码输入环节。
4 结语
WEB应用系统的安全开发需要在设计阶段便开始考虑,若前期安全设计不足而导致运行阶段安全事件的发生,则需要重新对应用系统进行修补,如果此时维护应用系统的不是当时的开发人员,或者开发人员因为时间久了对系统源码不熟悉,又要花费大量的时间去读懂源码并整改,大大提高了修复成本。
文章从威胁角度分析WEB账号管理功能安全设计不足而导致相关的风险,同时介绍了相应的安全开发思路与方法,不仅可提高开发人员的安全意识,而且扩展了开发人员关于WEB账号管理安全编码的思路。可帮助安全开发员在设计阶段便考虑WEB账号管理功能相关的安全设计,将“安全尽量往前移”,不仅可预防相关的安全事件的发生,而且可降低后期应用系统的维护成本。