介绍
如果我想知道的一件事,那是身份验证工作,会话身份验证和cookie身份验证的全部方式,都是基于令牌的身份验证的类型。因此,我们将讨论基于Cookie和基于会话的身份验证。作为开发人员,将有一段时间您看到在Web应用程序中使用身份验证的需要。
听到术语会话和饼干时,您会想到哪些图像? cookie直接保存在客户端(浏览器)上。虽然会议将cookie用作与服务器端保存的信息链接的关键。由于实际值是从客户端隐藏的,并且开发人员可以控制数据到期时,因此大多数开发人员都首选会议。
不要浪费时间,让我们直接跳入本指南。
什么是身份验证
验证用户或实体的身份以访问系统,网络或应用程序被称为身份验证。它需要确认用户或实体的身份凭据,例如用户名和密码,安全令牌,生物识别信息或数字证书,都是准确的。
为了确保仅授权当事方或个人可以访问敏感的数据和资源,身份验证是安全的关键组成部分。为了提供安全可靠的访问控制系统,它经常与其他安全措施一起使用,包括授权,加密和多因素身份验证。
什么是会话身份验证
当用户登录应用程序或网站时,会话身份验证(一种基于令牌的身份验证)为其创建一个特殊的会话ID。该会话ID的服务器端存储用于验证此点之后提出的用户请求。
服务器每次登录时都会生成一个新的会话ID,并将其链接到用户帐户。用户的浏览器然后将此会话ID作为cookie接收到该会话ID,该cookie保存在用户的设备上。随着每个连续的请求,用户的浏览器随后将会话ID发送回服务器,使其能够确认用户的身份并授予对安全资源的访问。
Web应用程序和网站经常使用会话身份验证来为用户提供访问其帐户的访问,而无需每次更改页面或执行其他操作时再次输入密码。它经常与其他安全措施(例如多因素身份验证和加密)协同起作用,以提供强大可靠的访问控制解决方案。
基于会话的身份验证
基于会话的身份验证具有优点,以下是使用基于会话的身份验证的优点。
-
安全性:通过要求用户输入每个会话的登录信息,基于会话的身份验证有助于防止对用户帐户的不必要访问。结果,攻击者访问用户帐户变得更具挑战性,因为他们需要了解每个会话的登录信息。
-
用户体验:由于用户只需要登录一次,并且其会话保持活跃一段时间,因此基于会话的身份验证可以使使用系统更容易(例如30分钟或一个小时)。这表明用户可以在网站或应用程序的页面之间进行,而无需重复输入其登录信息。
-
可伸缩性:由于服务器只需要跟踪活动会话而不是为每个用户保留登录信息,因此可以很容易地扩大基于会话的身份验证以处理大量用户。
li>
基于会话的身份验证的缺点
基于会话的身份验证的缺点。
- 对基于会话的身份验证的最大威胁之一是会话劫持,其中攻击者控制用户的会话并假定其身份。使用SSL加密,安全会话cookie和会话超时等保障措施可以帮助减轻这种情况。 ##
- 会话固定:在用户登录之前,攻击者建立用户的会话ID时,会发生这种潜在的缺陷用户登录后的ID,可以避免这种情况。 ##
- 资源消耗:由于服务器必须跟踪所有活动会话,因此基于会话的身份验证可能是非常密集的。这是因为此过程使用大量的内存和处理能力。通过对会话超时等限制进行限制和每个用户的活动会话次数,这可以减少。
什么是cookie身份验证
网站和Web应用程序采用Cookies身份验证作为用户身份验证技术。一个人登录到网站后,使用了很少的文本文件,称为cookie并将其保存在其设备上。
用户签入时,网站创建了带有特殊标识符的cookie。用户的设备然后将其存储在其浏览器中。该网站可能会识别用户并验证它们,而无需他们通过将cookie发送回网站,然后再访问。
。由于用户无需重复登录即可访问其帐户,因此Cookies身份验证可用于提供简单且无缝的用户体验。为了避免危害用户帐户的安全性,确保用于身份验证的cookie安全且难以操纵至关重要。另外,由于它不能总是提供足够的安全性,因此Cookie身份验证可能并不适合所有网站或应用程序。
基于饼干的身份验证
基于cookie的身份验证的优点
-
便利:基于cookie的身份验证使用户更容易访问网站或应用程序,因为他们在关闭浏览器或关闭设备后不需要连续输入登录信息。
< /li> -
可伸缩性:由于服务器只需要跟踪每个用户的活动会话,因此可以扩大基于Cookie的身份验证以处理大量用户。
-
个性化:通过在网站或应用程序上收集用户的偏好和行为,基于cookie的身份验证可以启用网站或应用程序来量身定制用户体验。
基于饼干的身份验证的缺点
基于饼干的身份验证的负面方面
-
安全风险:跨站点脚本(XSS)攻击和会话劫持是两个安全漏洞,基于Cookie的身份验证可能会受到。会话超时,SSL加密和使用安全cookie是可用于降低这种风险的对策。
-
基于Cookies的身份验证可能会呈现隐私问题,因为网站或应用程序可能正在收集和存储有关用户的个人信息。通过制定明确的隐私政策和收到数据收集的明确用户协议,可以减少策略。
-
共享设备或使用公共计算机的用户使用基于Cookie的身份验证的最佳用户体验可能没有最佳的用户体验,因为如果其他用户将其保存在设备上,则可以访问其登录信息。使用保障措施,例如让用户选择在会话中注销并删除cookie时,当用户登录可以帮助减轻此问题时。
基于Cookie的身份验证和基于会话的身份验证之间的差异
通过Web应用程序中的许多请求保存用户身份验证的常见方法包括基于Cookie的身份验证和基于会话的身份验证。
基于cookie的身份验证涉及将身份验证数据放入保存在用户浏览器上的cookie中,包括其登录凭据。为了识别用户并保留其授权状态,服务器将此cookie以及用户向Web应用程序提出的每个随后的请求发送。
另一方面,基于会话的身份验证包括在服务器端保存身份验证数据。当用户签入时,生成一个独家会话ID并将其链接到帐户。然后,将每个后续请求提供此会话ID,并将每个后续请求提供给服务器,并保存在用户的浏览器上作为cookie。然后,可以使用会话ID通过服务器查找用户的身份验证详细信息,这有助于将用户保持在身份验证的状态。
身份验证数据存储的位置是基于Cookie的身份验证和基于会话的身份验证之间的主要区别。尽管基于会话的身份验证将身份验证数据存储在服务器上,但基于Cookies的身份验证将其存储在用户的浏览器上。
通常,基于Cookies的身份验证更容易实现,因为服务器不需要跟踪任何会话数据,这是一个好处。基于Cookie的身份验证更容易受到安全威胁的影响,例如Cookie盗窃和会话劫持。
由于身份验证数据保留在服务器上,并且用户无法访问,因此通常认为基于会话的身份验证更安全。但是,由于服务器必须管理会话超时和到期以及会话信息,因此基于会话的身份验证可能更棘手。
最后,Web应用程序的要求和要求将决定是使用基于Cookie的身份验证还是基于会话的身份验证。
我应该使用哪一个?
每个开发人员都有权对使用哪种身份验证的意见。但是我的建议是使用基于会话的身份验证,因为它更安全。在构建您的网站或应用程序时,您可能需要使用其中任何一个。以下是会话和cookie身份验证的用例。
cookie Authentication的用例
当一个人注册到网站时,经常使用Cookies身份验证。在用户提交用户名和密码后验证用户凭据后,该服务器会创建一个不同的会话ID。然后,用户的浏览器cookie包含会话ID。每当用户向服务器提出新请求时,cookie都会与之一起发送,从而使服务器能够识别用户并提供自定义的信息。因为它实现非常简单,并且由Web浏览器广泛支持,因此Cookies身份验证是一个流行的选择。
会话身份验证的用例
当用户与必须重复请求完成作业的Web应用程序进行交互时,经常使用会话身份验证。例如,要在电子商务网站上下订单,用户可能需要在其购物车中添加项目,输入运输详细信息并输入付款信息。服务器构建一个会话对象,该对象链接到用户的登录凭据,以在多个请求中保留订单状态。单个会话ID与该会话对象一起在用户的浏览器中传递到服务器上。服务器可以获取会话对象并跟踪订单的状态,因为用户的每个将来的请求都包含会话ID。为了启用用户和Web应用程序之间的安全,状态的交互,会话身份验证经常与Cookie Authentication结合使用。
基于饼干的身份验证的最佳实践
使用cookie的身份验证:最佳实践:
- 使用httponly and Secure Flags设置,请使用安全的cookie。
- 在设置cookie到期时间时,请考虑数据的灵敏度和用户的行为。
- 为了防止篡改,使用强大的加密方法加密cookie内容。
- 停止重播攻击,给每个cookie一个特殊的标识号码。
- 在无状态的应用程序或其他情况下,饼干不合适的情况,请考虑使用基于令牌的策略作为cookie的身份验证。
基于会话的身份验证的最佳实践
基于会话的身份验证最佳实践
- 使用私人的随机会话标识并将其保存在服务器上。
- 要减少劫持会话的机会,请限制会议的寿命。
- 使用安全的会话归档技术,例如加密文件或数据库系统。
- 要在运输过程中保护会话数据,请使用SSL/TLS加密。
- 登录或在预定量的无活动量后,会话使会话无效。
在这两种情况下,定期评估和审核身份验证程序以发现和修复任何潜在的安全缺陷都是至关重要的。还必须指示用户有关最佳实践的指示,例如,在进行敏感业务时不向他人透露其登录信息,并远离公共计算机。
结论
最后,我们完成了本指南,希望您能获得很多价值!完整浏览本指南,您将学习cookie和sessions身份验证的基础知识,并了解有关身份验证本身的更多信息。
我们还看到了它们之间的许多差异,您会打赌我要通过本指南是浪费。随时在评论部分(如本指南)发表评论,然后关注我以获取更多信息。
谢谢,直到下次!
关于作者
全栈Laravel开发人员 Emmanuel Okolie 拥有2+
年在软件开发领域工作的经验。通过结合软件开发,写作和指导他人的工作,他已经开发了成熟的技能。
他的堆栈包括ReactJs
,Laravel
,PHP
,JavaScript
和其他语言和框架。
他为自由职业者创建网站,并撰写技术指南,向人们展示如何完成他的工作。
如果有机会, Emmanuel Okolie 很喜欢与您交谈。请前往他的website,Facebook,Github,LinkedIn和Twitter。