C# 当用户单击恶意链接时易受攻击

C# 当用户单击恶意链接时易受攻击,c#,asp.net,security,authentication,session-cookies,C#,Asp.net,Security,Authentication,Session Cookies,我正在尝试理解安全登录身份验证。实现登录功能的代码位于以下链接中。(在此场景中,使用guid,但在实际场景中,可以使用更好的机制) 用户登录后,欢迎页面将在以下链接中显示代码,以检查用户的真实性。(这是我能找到的验证用户身份验证的最常见代码) 我在想一个可能失败的场景。考虑方案 受害者已登录 受害者将在服务器上创建2个会话变量。前任: 会话[“userLoggedin”]=“受害者” 会话[“AuthToken”]=“GUID” 受害者将在其浏览器中创建一个cookie。前任: Cookie

我正在尝试理解安全登录身份验证。实现登录功能的代码位于以下链接中。(在此场景中,使用guid,但在实际场景中,可以使用更好的机制)

用户登录后,欢迎页面将在以下链接中显示代码,以检查用户的真实性。(这是我能找到的验证用户身份验证的最常见代码)

我在想一个可能失败的场景。考虑方案

  • 受害者已登录
  • 受害者将在服务器上创建2个会话变量。前任: 会话[“userLoggedin”]=“受害者” 会话[“AuthToken”]=“GUID”
  • 受害者将在其浏览器中创建一个cookie。前任: Cookie[“AuthToken”]=“GUID”
  • 攻击者向受害者发送恶意链接,对其状态进行一些更改(发送好友请求、删除用户、注销受害者……)。 假设链接如下所示: www.somewebsite.com/Logout,这将注销用户
  • 受害者单击链接,获得身份验证,因为浏览器中的cookie(即“GUID”)被发送到服务器,并根据会话变量进行验证
  • 用户注销
  • 我理解上述可能性不会造成严重影响,但这种情况是否可以避免?或者这是一个有效的方案?我错过什么了吗

    以下是我的问题

  • 这种情况可以处理吗?(考虑到这是一个有效的场景)
  • 我指的是安全代码吗
  • 这个漏洞是什么
  • 我如何减轻这种影响

  • 在本例中,您提到这是另一种攻击场景(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被传递并验证,操作完成。如果我错了,请纠正我