csrf防御方法有:1、验证HTTP Referer字段;2、在请求地址中添加token并验证;3、在HTTP头中自定义属性并验证。csrf是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
csrf是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
csrf防御方法:
目前防御 CSRF 攻击主要有三种策略:
1、验证 HTTP Referer 字段;
2、在请求地址中添加 token 并验证;
3、在 HTTP 头中自定义属性并验证。
下面我们来具体说一下:
(1)验证 HTTP Referer 字段
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。
因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
这种方法的显而易见的好处就是简单易行,网站的普通开发人员不需要操心 CSRF 的漏洞,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。
(2)在请求地址中添加 token 并验证
CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。
要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
(3)在 HTTP 头中自定义属性并验证
这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。
这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。
另外,对于没有进行 CSRF 防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的。
如果您想了解更多相关问题,可以访问php中文网。
以上是csrf防御方法有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

随着互联网的发展,Web服务器和应用程序变得越来越复杂,安全攻击也渐渐增多,Nginx是Web服务器和负载均衡技术中使用最广泛的工具之一。Nginx的反向代理机制可以使其成为一个可靠的应用服务器,同时也是一个被广泛攻击的目标。在这篇文章中,我们将探讨如何在Nginx反向代理中防御HTTP请求嗅探攻击。什么是HTTP请求嗅探攻击?HTTP请求嗅探攻击是一种常见

PHPSession跨域与跨站请求伪造的对比分析随着互联网的发展,Web应用程序的安全性显得格外重要。在开发Web应用程序时,PHPSession是一种常用的身份验证和会话跟踪机制,而跨域请求和跨站请求伪造(CSRF)则是两种主要的安全威胁。为了保护用户数据和应用程序的安全性,开发人员需要了解Session跨域和CSRF的区别,并采

PHP框架安全指南:如何防止CSRF攻击?跨站点请求伪造(CSRF)攻击是一种网络攻击,其中攻击者诱骗用户在受害者的网络应用程序中执行非预期操作。CSRF如何工作?CSRF攻击利用了一个事实:大多数Web应用程序允许在同一个域名内不同页面之间发送请求。攻击者创建恶意页面,该页面向受害者的应用程序发送请求,触发未经授权的操作。如何防止CSRF攻击?1.使用反CSRF令牌:向每个用户分配一个唯一的令牌,将其存储在会话或Cookie中。在应用程序中包含一个隐藏字段,用于提交该令牌

Laravel中的跨站脚本攻击(XSS)和跨站请求伪造(CSRF)防护随着互联网的发展,网络安全问题也变得越来越严峻。其中,跨站脚本攻击(Cross-SiteScripting,XSS)和跨站请求伪造(Cross-SiteRequestForgery,CSRF)是最为常见的攻击手段之一。Laravel作为一款流行的PHP开发框架,为用户提供了多种安全机

Java是一种广泛使用的编程语言,用于开发各种类型的应用程序。然而,由于其流行程度和广泛使用,Java程序也成为了黑客攻击的目标之一。本文将讨论如何使用一些方法来保护Java程序免受命令注入攻击的威胁。命令注入攻击是一种黑客攻击技术,通过在输入参数中插入恶意命令,来执行不受控制的操作。这种攻击可以让黑客执行系统命令、访问敏感数据或者获取系统权限。为了防止这种

随着网络的不断发展,网页应用也越来越多,然而,安全问题也越来越引起人们的关注。CSRF(CrossSiteRequestForgery,即跨站请求伪造)攻击就是一种常见的网络安全问题。CSRF攻击是什么?所谓CSRF攻击,就是攻击者盗用了用户的身份,以用户的名义进行非法操作。通俗的讲,就是攻击者利用用户的登录态,在用户毫不知情的情况下,进行一些非法的操

PHP和Vue.js开发防御跨站请求伪造(CSRF)攻击的应用程序随着互联网应用程序的发展,跨站请求伪造(Cross-SiteRequestForgery,CSRF)攻击成为了一种常见的安全威胁。它利用用户已经登录的身份进行伪造请求,从而执行恶意操作,如修改用户密码、发布垃圾信息等。为了保护用户的安全和数据的完整性,我们需要在应用程序中实施有效的CSRF

PHP中的跨站请求伪造(CSRF)防御技术解析随着互联网的快速发展,网络安全问题日益突出。跨站请求伪造(CSRF)攻击是一种常见的网络安全威胁,它利用用户已登陆的身份信息,通过伪装的请求发送恶意操作,导致用户在不知情的情况下执行了恶意操作。在PHP开发中,如何防御CSRF攻击成为了一个重要的问题。CSRF攻击原理在了解如何防御CSRF攻击之前,先了解一下CS


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器