【】 会话安全的重要性
在任何需要 服务器 和客户端之间进行通信的系统设计中,会话的安全性总是需要重点考虑的因素之一。不当的安全性设计往往会导致用户帐户容易受到未经授权的访问攻击。业界著名的OWASP(开放Web应用程序安全项目,请参见–
将“认证与授权的不当实施”视为应用安全的第二大风险(请参见–
下面是近年来发生在网络安全领域的典型案例:
在业界,许多CSO(首席安全官)都承认:在认证和授权方面的投入,向来都是企业安全预算中的烧钱大户。而且,他们普遍认为正确地实施用户会话管理可谓既耗时且昂贵。否则,自己乃至所在企业很可能会成为“下一个Jack和他的泰坦尼克号”。
值得注意的是:我们切勿将会话管理与OAuth(请参见–相混淆。后者是一种仅用于委托目的的协议。而前者涉及到如何在有效会话期间处理、存储和更改认证令牌。该处的令牌既可以是OAuth流,也可以是服务器与客户端之间的会话流。
JWT和Opaque令牌
下面,我们将简要地探讨会话管理中两种常用的主要令牌类型:
JSON Web令牌(JWT,请参见–
Opaque令牌
尽管这两种令牌类型的属性不同,但是一旦被盗用,都可能导致未经授权的帐户访问。
常见的会话攻击
通常情况下,由于验证令牌既可以被存储在前端,又可以被存放在后端,而且往往需要通过会话流经由网络传送,因此,它们很容易遭受到如下类型的攻击:
面对上述攻击,我们需要通过认真地考虑会话的安全性,部署适当的措施,来降低由于系统自身漏洞,所积累的各种攻击可能性。也就是说,系统架构师不仅要防止令牌被盗,还应当确保系统能够尽快地检测到令牌被盗的情况。
检测与防止认证令牌被盗
由于令牌往往需要被应用程序的前端传输到不受信任的另一方,而且很容易被盗用,因此我们需要通过检查来构建第一道防线。现有的检测方法主要依赖于启发式算法(heuristic algorithms)。例如:跟踪IP地址与浏览器(或移动端)指纹的突变,标记异常的用户行为等。不过此类方法既难以实施,又准确性不高。下面让我们来讨论一些常见的会话管理方法。
实施会话管理的常用方法
最常用的会话管理设置方法包括如下五大类:
1. 长期访问令牌
在用户主动注销会话的时候,访问令牌将被吊销,并在前端被清除。
2. 将短—中期有效的令牌,用于获取新的访问令牌
(1) 攻击分析
关键的认证令牌会永久性地暴露在前端、传输通道和后端,三个攻击面上。
(2) 认证令牌被盗的影响:
攻击者必须不断地更新其令牌,以维持其未经授权的访问状态。
(3) 盗用检测:
要保持登录状态,攻击者和受害者都需要在当前(被盗)令牌过期之前,向服务器请求新的访问令牌。如果同一令牌两次被用于该请求,那么系统会根据前端的实现方式,推断出发生了盗用行为。可见,短—中期有效的令牌虽然可以更快地被检测出是否存在盗用,但是同样由于寿命短暂,就算没有被盗用,用户的体验也并不佳。当然,一旦盗用行为被检测到,与该会话关联的访问令牌将会被立即吊销。不过,如果访问令牌是JWT,那么阻止此类攻击可能会比较复杂。
3. 短—中期访问令牌,其使用期限会延长
在用户主动注销会话的时候,访问令牌将被吊销,并在前端被清除。
4. 短期访问令牌
在用户主动注销会话的时候,访问令牌将被吊销,并在前端被清除。
5. 短期访问令牌和长期刷新令牌
u 在用户主动注销会话的时候,访问令牌和刷新令牌将被吊销,并在前端被清除。
刷新令牌被盗:只有在极少的情况下,我们能够检测到此类盗用行为,并将损失降至最低。例如:通过某种实现方式,让先前的访问令牌在生成新的令牌之后,立即被吊销。据此,系统可以在攻击者和受害者同时在线的情况下,识别出盗用的行为。也就是说,如果攻击者使用了刷新令牌,那么受害者的访问令牌将会被吊销,也就导致了受害者需要去请求新的访问令牌。而这将迫使攻击者发出另一个请求,依此类推。因此,如果后端能够检测到在较短间隔内,系统产生了大量对于新访问令牌的请求,则可以推断出盗用的状况。
在检测到攻击时,由于访问令牌的寿命非常短,因此我们无需吊销它们。不过,如果确实需要,我们可以通过从数据库中删除Opaque访问令牌,来吊销它们。
下面,我们针对不同的会话攻击类型,讨论各种相应的应对方法。
应对攻击的优秀实践
1. 中间人袭击
当会话仅使用HTTP,或错误地实现了HTTPS时,如果应用程序并未启用HTTPS、以及安全的cookie,那么攻击者就可以通过与受害者同处一个网络,来监视网络中的各种数据包,并在传输过程中以纯文本格式,去查看到认证令牌。此外,即使某些应用程序带有SSL证书,而错误的实现方式也可能导致中间人攻击得逞。
正如前面提到的,预防此类攻击的最简单方法是:在整个应用程序中正确地使用HTTPS和安全的cookie。此外,我们还可以通过在每台设备上使用公有、私有密钥来增强额外的预防力度。也就是说,在用户登录之前,前端和后端将在初始化时交换此类公钥。另外,为了后续通信的安全起见,我们也可以使用公钥对令牌数据进行加密。
2. OAuth令牌盗用
如果某个应用程序是通过OAuth的方式,向其他应用程序提供访问和刷新令牌。那么当其他应用程序的所在服务器受到威胁时,该应用本身的认证令牌也具有被盗的风险。前文提到的Docker Hub典型案例,就是属于此类型。
那么预防此类攻击的解决方法是:采取适当的措施,及时检测处被盗的刷新令牌,并仅使用短期有效的访问令牌类型。
3. XSS攻击
在XSS中,攻击者可以恶意地将Javascript注入到受害者的浏览器里,并运行在各种应用程序中。此类注入代码会读取认证令牌,并将其回传给攻击者。如果您想了解更多有关XSS攻击的信息,请参见–。
通过使用HttpOnly或各种Secure cookie来存储认证令牌,我们可以很容易地防御此类攻击的发生。不过,值得注意的是:请勿使用localStorage来存储认证令牌,因为它们会被Javascript所访问到。
此类攻击的目的并非窃取认证令牌,而是让攻击者可以跟踪(piggyback)现有的活动会话。
为了防止CSRF攻击,我们通常需要使用anti-CSRF令牌或SameSite cookie。当然,您也可以使用其他的方法,来与整个认证过程无缝地结合到一起,以解决此类问题。
5. 数据库/文件系统访问
如果攻击者获得了有效的认证令牌、或JWT/SSL私钥(此类密钥的盗用往往比密码被盗更为糟糕),就能够设法通过数据库的注入攻击,来访问到服务器,乃至数据库和文件系统理的信息。据此,他们将能够轻松地劫持会话,进而产生严重的安全后果。值得注意的是,攻击者很可能是贵组织内部的雇员,所以我们在对数据库/服务器实施访问控制时,需要注意如下两个方面:
6. 会话固定
此类攻击“主打”Web应用程序里的匿名会话,而应对的最佳方法是:让用户每次登录时,都生成一组新的认证令牌,并使旧的令牌(如果有的话)及时失效。注意,这是基于设备而不是基于用户实现的。

7. 蛮力攻击
那些具有足够资源的攻击者,经常会不断地去“猜测”认证令牌,直到其中的一种尝试成功通过为止。据此,他们将获得被盗令牌所授予的所有访问权限。而抵御此类攻击的最佳方法是:使用带有高熵(high entropy)且位数较长的认证令牌。
总结
通过上述分析,我们了解到了会话管理的基本概念、常见的会话安全缺陷、各种攻击类型、以及应对措施的最佳实践。希望本文能够给您在系统架构设计的实践和安全管理中提供帮助。
怎么样将账号永久保护啊?
第二代密码保护的官方网站为和,请认准这两个网站域名(都是一样的腾讯的官方网址)2.腾讯公司目前不提供人工代理升级至第二代密保的服务请提高警惕,谨防受骗! “永久保护”是第二代密码保护(DNA)的顶级品牌,永久保护状态的用户可终身享受:若QQ帐号发生争议,只需出示校验过的DNA资料,即可取回帐号;若用户虚拟资产损失(如游戏装备被盗),在证据确凿的情况下可以予以赔付;若用户资料遭恶意破坏(如好友被恶意删除),在证据确凿的情况下可以予以恢复. 您可以新申请一个QQ帐号,在申请过程中如实填写DNA资料,包括:安全问题/答案、安全电子邮箱、安全手机、个人身份信息(姓名、证件等),申请成功后按提示可马上跳转到QQ帐号服务中心进行DNA资料校验,个人身份信息(姓名、证件等)经审核通过,即可以获得永久保护
server2012 域控制器上 用户属性 “安全”选项在哪里找?我这个没有呢
点击查看---勾选高级功能
通讯网络的安全隐患有哪些
Internet的前身是APPANET,而APPNET最初是为军事机构服务的,对网络安全的关注较少。 在进行通信时,Internet用户的数据被拆成一个个数据包,然后经过若干结点辗转传递到终点。 在Internet上,数据传递是靠TCP/IP实现的。 但是TCP/IP在传递数据包时,并未对其加密。 换言之,在数据包所经过的每个结点上,都可直接获取这些数据包,并可分析、存储之。 如果数据包内含有商业敏感数据或个人隐私信息,则任何人都可轻易解读。 几种常见的盗窃数据或侵入网络的方法:1.窃听(Eavesdropping)最简易的窃听方式是将计算机连入网络,利用专门的工具软件对在网络上传输的数据包进行分析。 进行窃听的最佳位置是网络中的路由器,特别是位于关卡处的路由器,它们是数据包的集散地,在该处安装一个窃听程序,可以轻易获取很多秘密。 2.窃取(Spoofing)这种入侵方式一般出现在使用支持信任机制网络中。 在这种机制下,通常,用户只需拥有合法帐号即可通过认证,因此入侵者可以利用信任关系,冒充一方与另一方连网,以窃取信息3.会话窃夺(Spoofing)会话劫夺指入侵者首先在网络上窥探现有的会话,发现有攻击价值的会话后,便将参与会话的一方截断,并顶替被截断方继续与另一方进行连接,以窃取信息。 4.利用操作系统漏洞任何操作系统都难免存在漏洞,包括新一代操作系统。 操作系统的漏洞大致可分为两部分:一部分是由设计缺陷造成的。 包括协议方面的、网络服务方面的、共用程序库方面的等等。 另一部分则是由于使用不得法所致。 这种由于系统管理不善所引发的漏洞主要是系统资源或帐户权限设置不当。 5.盗用密码盗用密码是最简单和狠毒的技巧。 通常有两种方式: 密码被盗用,通常是因为用户不小心被他人“发现”了。 而“发现”的方法一般是“猜测”。 猜密码的方式有多种,最常见的是在登录系统时尝试不同的密码,系统允许用户登录就意味着密码被猜中了 另一种比较常见的方法是先从服务器中获得被加密的密码表,再利用公开的算法进行计算,直到求出密码为止,这种技巧最常用于Unix系统6.木马、病毒、暗门 计算机技术中的木马,是一种与计算机病毒类似的指令集合,它寄生在普通程序中,并在暗中进行某些破坏性操作或进行盗窃数据。 木马与计算机病毒的区别是,前者不进行自我复制,即不感染其他程序 暗门(trapdoor)又称后门(backdoor),指隐藏在程序中的秘密功能,通常是程序设计者为了能在日后随意进入系统而设置的 病毒是一种寄生在普通程序中、且能够将自身复制到其他程序、并通过执行某些操作,破坏系统或干扰系统运行的“坏”程序。 其不良行为可能是悄悄进行的,也可能是明目张胆实施的,可能没有破坏性,也可能毁掉用户几十年的心血。 病毒程序除可从事破坏活动外,也可能进行间谍活动,例如,将服务器内的数据传往某个主机等7.隐秘通道安装防火墙、选择满足工业标准的的安全结构、对进出网络环境的存储媒体实施严格管制,可起到一定的安全防护作用,但仍然不能保证绝对安全
发表评论