栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

每个请求是否有新的CSRF令牌?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每个请求是否有新的CSRF令牌?

如果您按照表单请求进行操作-那么基本上就可以消除CSRF攻击的发生,并且可以解决另一个常见问题:提交多表单

简而言之-如果用户在提交之前询问表单,则您的应用程序将仅接受表单输入。

正常情况: 用户A进入您的网站,并要求提供表单A,并获得表单A以及表单​​A的唯一代码。用户提交表单A时,他/她必须包括仅用于表单A的唯一代码。

CSRF攻击情形:
用户A进入您的网站,并要求提供表格A。与此同时,他们访问了另一个“不良”网站,该网站尝试对他们进行CSRF攻击,使他们提交了伪造的表格B。

但是您的网站知道用户A从未要求过表单B-
因此,即使他们具有表单A的唯一代码,表单B也将被拒绝,因为他们没有表单B的唯一代码,只有表单A的代码。您的用户很安全,晚上可以入睡。

但是,如果您将其用作通用令牌,并且持续了一个小时(如您在上面发布的内容),则上述攻击可能会起作用,在这种情况下,CSRF保护并没有取得太大的成就。这是因为应用程序不知道最初从未要求过表格B。它是一个通用令牌。CSRF预防的整个要点是使每个表单令牌对于该表单都是唯一的

编辑:因为您需要更多信息:
1-您不必每次表单请求都要做,您可以按小时/会话等进行。要点是提供给用户的秘密值,在返回时会重新提交。另一个网站不知道该值,因此不能提交错误的表格。

因此,您可以根据请求或会话生成令牌:

// Before rendering the page:$data['my_token'] = md5(uniqid(rand(), true));$_SESSION['my_token'] = $data['my_token'];// During page rendering:<input type="hidden" name="my_token" id="my_token" value="<? php echo $_SESSION['my_token']?>" />// After they click submit, when checking form:if ($_POST['my_token'] === $_SESSION['my_token']){        // was ok}else{          // was bad!!!}

并且因为它是“按表单”的-您不会收到双份表单的提交-因为您可以在首次提交表单后擦除令牌!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号