当前位置: 首页 > 面试题库 >

这是防止跨站点请求伪造(CSRF)攻击的安全方法吗?

韦俊英
2023-03-14
问题内容

因此,我们的应用程序是:

  • 每个用户都必须登录
  • 登录页面回发到服务器,并且如果授权用户返回SPA应用程序。
  • SPA应用程序完全是AJAX
  • HTTPS

通常我们会发送一个sessionidcookie和一个csrftokencookie。令牌cookie值将作为x-
header包含在任何AJAX帖子中,并且每次请求都将在服务器上验证所有内容。

由于SPA页面是在返回浏览器之前构建的,因此我们可以在其中嵌入我们想要的任何内容。我们希望最终用户能够登录多个选项卡,而一个选项卡不影响其他选项卡。

我们宁愿做的是:

  • 像以前一样,将sessionid作为cookie发送,但是cookie名称将是随机的。
  • 没有csrftoken,而是将随机cookie名称嵌入到将X标头添加到AJAX发布请求的javascript例程中。
  • 服务器将从x标头获取sessionid。

这使我们有机会允许多次登录,每次登录都有唯一的sessionidcookie名称,但每个发布请求都具有标准化的x-header名称。

这和sessionid cookie,csrftoken cookie / x-header方法一样安全吗?


问题答案:

是的,添加攻击者无法从有效用户的会话中复制的标头是执行此操作的一种方法。

例如X-Requested-With可以将其添加到每个AJAX请求中(默认情况下,JQuery会执行此操作),并且在服务器端收到请求时,您只需检查此标头是否存在。如果没有服务器通过CORS选择加入,则无法跨域发送此标头。

例如

X-Requested-With: XMLHttpRequest;0123456789ABCDEF


 类似资料:
  • 我正在开发Web应用程序,并要求在发布之前对其运行。 然后我下载了Vega并快速扫描了我的webapp,发现了一个VAPT问题,如下所示: Vega检测到资源设置了不安全的跨源资源共享(CORS)访问控制。CORS提供了允许服务器将跨站点请求的资源访问限制到某些受信任域的机制。通过将“Access Control Allow origin”响应头的值设置为通配符值,所讨论的服务器已允许来自任何源的

  • 问题内容: 我有一个网站,人们可以像这样投票: 这将对项目25进行投票。我只想让已注册的用户可以使用此功能,并且仅当他们想要这样做时才可以使用。现在我知道有人在网站上忙碌时,有人给他们这样的链接: 那么投票将成为他不希望这样做的地方。 我已经在OWASP网站上阅读了说明,但是我不太理解 这是CSRF的示例,如何防止这种情况发生?我能想到的最好的事情就是在链接中添加一些内容,例如哈希。但是,在所有链

  • 本文向大家介绍Django中如何防范CSRF跨站点请求伪造攻击的实现,包括了Django中如何防范CSRF跨站点请求伪造攻击的实现的使用技巧和注意事项,需要的朋友参考一下 CSRF概念 CSRF跨站点请求伪造(Cross—Site Request Forgery)。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发

  • CSRF攻击迫使经过身份验证的用户(受害者)发送伪造的HTTP请求,包括受害者的会话cookie到易受攻击的Web应用程序,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序感知来自受害者。 我们下面来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 任何人都可以将内容加载到用户的浏览器中,从而迫使他们向您的网站提交请求。 攻击者的方法 - 攻击者创建伪造

  • 问题内容: 我想为基于Struts 1.x框架的Web应用程序实施跨站点请求伪造预防。我知道struts 2框架为此提供了令牌拦截器,并且可以使用过滤器实现类似的功能。 我对一些想法感到困惑1)如何以简单的方式生成唯一令牌?(我可以为此目的使用Action类令牌来避免重复提交表单) 将struts 1.x框架令牌机制用于CSRF预防是否存在任何问题 问题答案: Struts 1 Action令牌方

  • 本文向大家介绍Django CSRF跨站请求伪造防护过程解析,包括了Django CSRF跨站请求伪造防护过程解析的使用技巧和注意事项,需要的朋友参考一下 前言 CSRF全称Cross-site request forgery(跨站请求伪造),是一种网络的攻击方式,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF。 攻击原理 1、用户访问