编码员征服安全。分享与学习系列--会话管理的弱点
你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的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位,以防止暴力攻击
Spring、ASP.NET Core、Rails 和Django等网络框架都具有这些属性,在这种情况下应使用它们更高的安全标准。
一句话。不要从头开始创建你自己的会话管理系统。
一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。
保护你的会议
请查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。
Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。


你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的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位,以防止暴力攻击
Spring、ASP.NET Core、Rails 和Django等网络框架都具有这些属性,在这种情况下应使用它们更高的安全标准。
一句话。不要从头开始创建你自己的会话管理系统。
一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。
保护你的会议
请查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。

你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的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位,以防止暴力攻击
Spring、ASP.NET Core、Rails 和Django等网络框架都具有这些属性,在这种情况下应使用它们更高的安全标准。
一句话。不要从头开始创建你自己的会话管理系统。
一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。
保护你的会议
请查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。
你导航到一个网站并登录。像往常一样,你把你想买的产品装满了你的购物车。然后,哎呀--你的手一滑,关闭了浏览器标签。惊慌失措之后,你在浏览器中重新输入网站的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位,以防止暴力攻击
Spring、ASP.NET Core、Rails 和Django等网络框架都具有这些属性,在这种情况下应使用它们更高的安全标准。
一句话。不要从头开始创建你自己的会话管理系统。
一旦会话ID被创建,它们就需要被保护。将会话cookie的安全和HttpOnly标志设为 "true"。这可以确保它们的值不能被JavaScript检索,浏览器只会通过HTTPS发送cookie,防止攻击者在传输过程中窃取别人的会话。
保护你的会议
请查看我们的免费学习资源,了解更多关于安全会话管理的信息。学习如何保护你的会话将有助于防止用户账户被接管、声誉受损以及因安全漏洞而导致的收入损失。保护你的会话,保证你的用户安全。
资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。