当前位置: 首页 > 知识库问答 >
问题:

令牌如何防止csrf攻击?

充栋
2023-03-14

我读过关于CSRF和不可预测的同步令牌模式是如何用来防止它的。我不太明白它是如何工作的。

让我们以这个场景为例:

用户使用以下表单登录到站点:

<form action="changePassword" method="POST">
   <input type="text" name="password"><br>
   <input type="hidden" name="token" value='asdjkldssdk22332nkadjf' >
</form>

服务器还将令牌存储在会话中。发送请求时,它将表单数据中的令牌与会话中的令牌进行比较。

当黑客可以编写JavaScript代码时,如何防止CSRF:

  1. 发送GET请求到站点
  2. 接收包含请求表单的html文本。
  3. 在html文本中搜索CSRF令牌。
  4. 使用该令牌发出恶意请求。

我错过了什么?

共有2个答案

张昊穹
2023-03-14

重要的是要认识到CSRF攻击只发生在浏览器中。恶意服务器使用用户与目标服务器的会话伪造请求。那么#1是如何发生的呢?两种选择:您可以从恶意服务器发出#1请求,但这只会返回服务器会话的CSRF令牌,或者您可以使用AJAX发出#1请求,正如您正确识别的那样,这将返回受害用户的CSRF令牌。

正是出于这个原因,浏览器实现了HTTP访问控制。您必须使用accesscontrolalloworigin标题来限制哪些域可以向您的服务器发出AJAX请求。换句话说,您的服务器将确保浏览器不会让恶意网站这样做。不幸的是,我读到的关于这个问题的文档并不十分清楚,但我认为这是因为服务器默认情况下不会发送Access Control Allow Origin头,除非配置为这样做。如果确实需要允许AJAX请求,则必须信任标头中的任何来源以不执行CSRF攻击,可以有选择地锁定应用程序的敏感部分以不允许AJAX请求,或者使用其他访问控制-*标头来保护自己。

使用同步器令牌是应用程序可以依赖同源策略的一种方式,通过维护秘密令牌来验证请求来防止CSRF

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\预防措施\备忘单

您应该阅读跨源资源共享(CORS)。

宣熙云
2023-03-14

攻击者无法使用JavaScript从站点读取令牌,因为这将是一个跨源请求,对其数据的访问被相同源策略(MDN,W3C)阻止(默认情况下)。

以这个为例:

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://google.com");
xhr.addEventListener('load', function (ev) {
    console.log(this.responseText);  
});
xhr.send();
 类似资料:
  • 请澄清我对CSRF攻击的概念。在csrf中,我们从隐藏字段发送令牌,即, 我们会在会议的基础上提交表格。如果攻击者找到我的表单并更改隐藏值并提交表单,则他将成功。我怎样才能防止形成。

  • 什么是CSRF CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 那么CSRF到底能够干嘛呢?你可以这样简单的理解:攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求。攻击者只要借助少许的社会工程学的诡计,例如通过QQ等聊天软件发送的链接(有些还伪装成

  • 本文向大家介绍如何防止XSS攻击?相关面试题,主要包含被问及如何防止XSS攻击?时的应答技巧和注意事项,需要的朋友参考一下 (1) 将前端输出数据都进行转义 (2) 将输出的字符串中的\反斜杠进行转义 (3) 从url中获取的信息,防止方法是由后端获取,在前端转义后再行输出 (4) 使用cookie的HttpOnly属性,保护好cookie 详细参见:http://blog.csdn.net/fe

  • 我们对代码进行了安全审计,它提到我们的代码容易受到XML外部实体(XXE)攻击。 XML外部实体攻击利用XML功能在处理时动态构建文档。XML实体允许动态包含来自给定资源的数据。外部实体允许XML文档包含来自外部URI的数据。除非配置为其他方式,否则外部实体会强制XML解析器访问URI指定的资源,例如本地计算机或远程系统上的文件。此行为会使应用程序遭受XML外部实体(XXE)攻击,这些攻击可用于执

  • 本文向大家介绍csrf 攻击是怎样攻击的? 如何防御相关面试题,主要包含被问及csrf 攻击是怎样攻击的? 如何防御时的应答技巧和注意事项,需要的朋友参考一下 get, post, delete, 分开, 避免使用get修改数据 避免让第三方站点访问cookie 对referrer进行验证 token 阻止第三方请求 .

  • 我一直在阅读有关使用同步器令牌模式来防止CSRF(CSRF意味着跨站点请求伪造)的内容,我不明白它到底是怎么安全的。 假设我有一个伪造的银行网站。具有两个URL的com: -显示取款表单的GET请求 -发布到此url以执行撤消操作 我对安全漏洞的理解是,可以向伪造银行伪造POST请求。com/doWithdraw,如果您当前登录到fakebank,则发布将成功。 假设我们实现了一个同步器令牌模式,