编码员征服安全。分享与学习系列--会话管理的弱点

发表于2019年1月31日
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列--会话管理的弱点

发表于2019年1月31日
作者:Jaap Karan Singh
查看资源
查看资源

你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的URL,并按下 "Enter "键。你被带回了网站,登录了,而你所有的商品都还在购物车里。呜呼。

该网站是如何知道你是谁而不重新认证的?它识别了你,因为它在使用会话。会话是使用网络时获得良好用户体验的关键。然而,不正确地管理会话可能导致攻击者可以利用的安全漏洞。

现在让我们回顾一下会话管理的含义,薄弱的会话管理如何伤害你,以及你可以做什么来正确管理会话。

了解会话管理的弱点

会话是指存储在服务器上的一个值,具体到应用程序的一个用户。这是有必要的,原因有二。首先,HTTP是一个无状态协议。每个请求都是独立的,对之前或之后的请求一无所知。会话有助于服务器跟踪谁发送了请求。否则,你每次点击一个按钮或一个链接时都需要登录。

会话的第二个原因是为了对用户进行授权。会话标识符可以用来识别系统内具有特定权限的特定用户。应用程序将知道这个人是谁以及他们被允许做什么。

一个会话有两个组成部分。服务器端的一个数据存储器存储了一个会话标识符,并将其映射到用户的信息,如用户ID或购物车信息。同样的会话标识符被发送到浏览器的cookie中。浏览器将cookie存储在用户的系统中。客户端在每次请求时都会传递cookie,让服务器知道这个请求是来自同一个用户。大多数应用程序使用会话来跟踪用户在认证前和认证后的情况。

正确的会话管理对一个应用程序的安全是至关重要的。一个有效的会话ID具有与用户名/密码,甚至是第二因素认证令牌相同的信任度。

为什么糟糕的会话管理是危险的

糟糕的会话管理可能导致账户被完全接管。这意味着客户数据可能被盗,或者产品可能被欺诈性地购买。攻击者有几种方法来获得有效的会话ID。

当会话在关键时刻没有被改变时,例如当用户登录系统时,如果会话标识符可以使用URL来设置,就会发生会话固定攻击。以这种方式设置会话标识符可能被用来保持用户在使用相同认证源的不同应用程序中的登录状态。在这种情况下,攻击者可以浏览到一个网站并获得一个会话标识。然后,攻击者通过电子邮件向毫无戒心的受害者发送一个URL,URL中含有会话ID。受害者点击电子邮件中的URL并登录到网站。如果会话ID在登录时没有被旋转,攻击者现在就有一个有效的、经过验证的会话ID。这允许完全接管账户。

对不良会话管理的另一种攻击是暴力猜测攻击。当开发者试图创建他们自己的会话管理系统时,他们经常使用很容易猜到的会话ID。这些可能是一个序列(1,2,3)或某种可预测的模式。攻击者只是不断猜测会话ID,直到发现一个有效的ID。这也导致了账户被接管。

在一定时间过去后没有自动失效的会话可以被利用来攻击用户。一个成功的跨站请求伪造攻击取决于用户离开网站后仍然有效的会话。假设攻击者在用户访问的网站上放置一个iframe或图片。src"(源)属性被设置为受攻击网站的URL,并代表用户执行一个动作。例如,一个有漏洞的银行应用程序可以在未经用户许可的情况下将钱转到攻击者的账户。

会话管理可能很棘手,弱点可能是破坏性的。然而,这是一个众所周知的问题,它可以被解决。

打败不安全的会话管理

会话管理是任何网络应用的一个核心部分。因此,许多网络开发框架有内置的会话管理功能。这些系统已经被专家仔细检查过,以发现和剔除问题。使用它们。

良好的会话管理的一些共同属性包括。

     生成攻击者无法猜测的随机会话ID

     当用户注销时,会话将失效。

     会话在经过一定时间后会自动失效

     会话ID在用户登录后被改变

     会话ID至少有128位,以防止暴力攻击

SpringASP.NET CoreRailsDjango等Web框架都有这些属性,在这种情况下应该使用它们更高的安全标准。

一句话。不要从头开始创建你自己的会话管理系统。

一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。

保护你的会议

查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列--会话管理的弱点

发表于2019年1月31日
作者:Jaap Karan Singh

你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的URL,并按下 "Enter "键。你被带回了网站,登录了,而你所有的商品都还在购物车里。呜呼。

该网站是如何知道你是谁而不重新认证的?它识别了你,因为它在使用会话。会话是使用网络时获得良好用户体验的关键。然而,不正确地管理会话可能导致攻击者可以利用的安全漏洞。

现在让我们回顾一下会话管理的含义,薄弱的会话管理如何伤害你,以及你可以做什么来正确管理会话。

了解会话管理的弱点

会话是指存储在服务器上的一个值,具体到应用程序的一个用户。这是有必要的,原因有二。首先,HTTP是一个无状态协议。每个请求都是独立的,对之前或之后的请求一无所知。会话有助于服务器跟踪谁发送了请求。否则,你每次点击一个按钮或一个链接时都需要登录。

会话的第二个原因是为了对用户进行授权。会话标识符可以用来识别系统内具有特定权限的特定用户。应用程序将知道这个人是谁以及他们被允许做什么。

一个会话有两个组成部分。服务器端的一个数据存储器存储了一个会话标识符,并将其映射到用户的信息,如用户ID或购物车信息。同样的会话标识符被发送到浏览器的cookie中。浏览器将cookie存储在用户的系统中。客户端在每次请求时都会传递cookie,让服务器知道这个请求是来自同一个用户。大多数应用程序使用会话来跟踪用户在认证前和认证后的情况。

正确的会话管理对一个应用程序的安全是至关重要的。一个有效的会话ID具有与用户名/密码,甚至是第二因素认证令牌相同的信任度。

为什么糟糕的会话管理是危险的

糟糕的会话管理可能导致账户被完全接管。这意味着客户数据可能被盗,或者产品可能被欺诈性地购买。攻击者有几种方法来获得有效的会话ID。

当会话在关键时刻没有被改变时,例如当用户登录系统时,如果会话标识符可以使用URL来设置,就会发生会话固定攻击。以这种方式设置会话标识符可能被用来保持用户在使用相同认证源的不同应用程序中的登录状态。在这种情况下,攻击者可以浏览到一个网站并获得一个会话标识。然后,攻击者通过电子邮件向毫无戒心的受害者发送一个URL,URL中含有会话ID。受害者点击电子邮件中的URL并登录到网站。如果会话ID在登录时没有被旋转,攻击者现在就有一个有效的、经过验证的会话ID。这允许完全接管账户。

对不良会话管理的另一种攻击是暴力猜测攻击。当开发者试图创建他们自己的会话管理系统时,他们经常使用很容易猜到的会话ID。这些可能是一个序列(1,2,3)或某种可预测的模式。攻击者只是不断猜测会话ID,直到发现一个有效的ID。这也导致了账户被接管。

在一定时间过去后没有自动失效的会话可以被利用来攻击用户。一个成功的跨站请求伪造攻击取决于用户离开网站后仍然有效的会话。假设攻击者在用户访问的网站上放置一个iframe或图片。src"(源)属性被设置为受攻击网站的URL,并代表用户执行一个动作。例如,一个有漏洞的银行应用程序可以在未经用户许可的情况下将钱转到攻击者的账户。

会话管理可能很棘手,弱点可能是破坏性的。然而,这是一个众所周知的问题,它可以被解决。

打败不安全的会话管理

会话管理是任何网络应用的一个核心部分。因此,许多网络开发框架有内置的会话管理功能。这些系统已经被专家仔细检查过,以发现和剔除问题。使用它们。

良好的会话管理的一些共同属性包括。

     生成攻击者无法猜测的随机会话ID

     当用户注销时,会话将失效。

     会话在经过一定时间后会自动失效

     会话ID在用户登录后被改变

     会话ID至少有128位,以防止暴力攻击

SpringASP.NET CoreRailsDjango等Web框架都有这些属性,在这种情况下应该使用它们更高的安全标准。

一句话。不要从头开始创建你自己的会话管理系统。

一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。

保护你的会议

查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。