C# 当用户单击恶意链接时易受攻击
我正在尝试理解安全登录身份验证。实现登录功能的代码位于以下链接中。(在此场景中,使用guid,但在实际场景中,可以使用更好的机制) 用户登录后,欢迎页面将在以下链接中显示代码,以检查用户的真实性。(这是我能找到的验证用户身份验证的最常见代码) 我在想一个可能失败的场景。考虑方案C# 当用户单击恶意链接时易受攻击,c#,asp.net,security,authentication,session-cookies,C#,Asp.net,Security,Authentication,Session Cookies,我正在尝试理解安全登录身份验证。实现登录功能的代码位于以下链接中。(在此场景中,使用guid,但在实际场景中,可以使用更好的机制) 用户登录后,欢迎页面将在以下链接中显示代码,以检查用户的真实性。(这是我能找到的验证用户身份验证的最常见代码) 我在想一个可能失败的场景。考虑方案 受害者已登录 受害者将在服务器上创建2个会话变量。前任: 会话[“userLoggedin”]=“受害者” 会话[“AuthToken”]=“GUID” 受害者将在其浏览器中创建一个cookie。前任: Cookie
在本例中,您提到这是另一种攻击场景(CSRF) CSRF的基本含义是:攻击者代表受害者执行操作。此操作或此操作的原始请求将来自其他站点 为了防止CSRF,您可能需要遵循OWASPs指南。() 但以你为例。假设您希望保护名为Order的操作。 将在您的服务器上生成一个令牌。然后,该令牌将被呈现或发送到客户端。 带有Post参数的有效请求类似于
www.somewebsite.com/Order
Order=Something&Token=“RANDOM\u Token”
在执行此操作之前,服务器将随后检查此令牌
然而,如果攻击者只是从另一个站点/域发起此请求,则他将无法访问此令牌,因为它是在客户端页面上呈现的
攻击者是否有可能访问此令牌?
是的,如果应用程序易受(XSS)攻击,则可能会发生这种情况。
使用JS,攻击者可以使用JS命令向受害者发送恶意链接,该命令将
- 获取呈现的CSRF令牌
- 使用令牌执行操作
虽然XSS通常会偷受害者的饼干。但是,如果cookie标记为
HTTPOnly
,则可能会发生CSRF攻击。请看。根据我的理解,只有当请求来自跨站点时,这才属于CSRF。如果攻击者与受害者共享的链接来自同一来源,该怎么办。例:1。受害者已登录www.somewebsite.com 2。攻击者还使用同一个网站并知道几个URL。他给受害者发送了一个链接:www.somewebsite.com/DoSomething 3。受害者单击此链接时不知道这是恶意链接。(受害者对url一无所知)4。单击后,Cookie被传递并验证,操作完成。如果我错了,请纠正我