首页 > 编程知识 正文

csrf跨站请求伪造的直接现象,跨域站点攻击

时间:2023-05-03 12:07:40 阅读:150965 作者:2255

我们都在走向不同的人生。 我希望在得不到大钱的日子里能得到比钱更宝贵的东西。

跨域问题

当浏览器向后端发送请求,然后后端向前端返回数据时,会出现域间问题。 后端通常会返回数据,但前端确定此时返回数据的url与第一次访问前端项目的url不同,然后选择拒绝接收数据。 这时,产生了跨域。 这也是由于浏览器的同源策略。

跨域主要是指域名、端口和IP不匹配。

浏览器的同源策略也避免了一些安全问题。 所谓相同,就是“协议域名端口”的三者相同,即使两个不同的域名指向同一个ip地址,也不会相同。

如果没有同源策略,例如用户的电脑中有病毒,在用户访问网站a时,或者在返回数据之前,病毒会将访问未知网站b的命令填入数据中。 此时,网站b会拿着正常用户的cookie做未知的事情,导致用户的损失。

域间的一些解决方案:

1、jsonp只能跨越域,实现get请求

script标签不受同源策略的影响,向url写入网址

2、域间资源共享) )。

将访问控制分配添加到服务器端响应标头

3、Nginx代理跨域

服务器{ listen 8888; #自身监听8888端口的server_name first; 位置/{ charset utf-8; #中文add _ header ' access-control-allow-origin ' * '; #所有访问地址add _ header ' access-control-allow-credentials ' ' true '; 如果设置为true,则cookie add _ header ' access-control-allow-methods ' ' get,PUT,POST,DELETE,OPTIONS '; #支持请求方式add _ header ' access-control-allow-headers ' ' content-type,* '; if($request_method='options ' ) {return 204; } proxy _ pass http://127.0.0.1:8082; #与其他地址不匹配的默认匹配地址是访问8080端口并由本地node start启动的服务}前端项目常规解析跨域:

proxy table : { }/API ' : { target : } http://127.0.0.133601000//接口域名changeOrigin: true, //接口跨越域时需要此参数配置的pathrerite : { ' ^/API ' : '/API ' } csrf攻击csrf攻击是攻击者窃取了你的身份,并以你的名义发送的CSRF能做的就是以你的名义发邮件、发消息、偷账户、购买商品、用虚拟货币汇款,简单来说就是你的隐私信息泄露和财产的安全。 因此,许多浏览器都进行了域间请求限制,这是浏览器级别对CSRF攻击的防御,但在复杂的网络环境下,仅仅通过浏览器防御CSRF攻击还不够,还需要服务器端和客户端进行防御

中间件

process_request

process_view

process_response

process_exception

process_render_template

中间件的csrf是如何实现的?

django.views.decorators.csrfimportcsrf _ exempt,csrf_protect (中间件注释掉csrf,不使用所有工作站。 添加此方法将指示某个函数需要认证) )。

process_view方法检查是否用@csrf_exempt进行了装饰。 免除@csrf_exempt认证。 -在请求方或cookies上获取token

在FBV中可以使用直接加法@csrf_exempt @csrf_protect

将django.utils.decorators.method _ decoratorscbv添加到相应方法是无效的,它将添加到dispatch,并将csrf_exempt作为method _ dempt参数

方法1:class a : @ method _ decorators (csrf _ exempt ) defdispatch ) self,request,*args,**kwargs ) return super )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。