博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨域请求方法及安全问题
阅读量:5883 次
发布时间:2019-06-19

本文共 1285 字,大约阅读时间需要 4 分钟。

hot3.png

跨域请求方式

1、jsonp 是json 的一种使用方式, 跨域是通过javascript 方式实现,而不是 xhr; request_method 始终是get方式; JSONP是基于JSON格式的为解决跨域请求资源而产生的解决方案。它的基本原理是利用HTML的元素标签,远程调用JSON文件来实现数据传递。本文将梳理JSONP实现过程中的安全攻防。

然后通过回调函数callbackFunction处理返回

ajax调用方式:

$.ajax({dataType:'jsonp',data:'id=10',jsonp:'jsonp_callback',url:'http://www.yiwuku.com/getdata',success:function(){//dostuff},});

2、如果想使用 post 方式则需要在服务器端加允许跨域请求 header("Access-Control-Allow-Origin:*"); 然后 ajax 请求中

crossDomain: true, dataType: 'json',

另如果返回中文乱码,需 js 加

contentType: 'application/x-www-form-urlencoded;charset=UTF-8',

jsonp 安全问题

JSON劫持,CSRF(Cross-site request forgery跨站请求伪造)攻击范畴。 跨站请求伪造(cross site request forgery简称CSRF)是一种利用用户的身份对网站进行某种操作的漏洞,用户自己察觉不到这种操作,但操作请求是以用户的身份发出去的。网站是通过cookie来识别用户的,比如当用户成功在A网站进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个A网站会带上这个cookie。如果这期间用户访问了某个不受信任的第三方站点B,而该站点包含了对A站点某个接口进行请求的代码,那么这个请求就会以用户的身份发出去,而用户自己并不知情。

危害:以用户的身份在用户不知情的情况下执行用户所不愿意执行的操作,比如:修改个人资料,修改管理密码,进行银行转账,操纵用户恶意刷票等等

方案之一就是验证JSON文件调用的来源(Referer)。它主要利用<script>远程加载JSON文件时会发送Referer的机制,在网站输出JSON数据时,判断Referer是否包含在白名单内。 方案之二就是使用随机token防御, 例如通过

限制Referer+部署随机token实现

关键性的操作一律使用POST方式提交数据,同时在表单和服务端session中都要存放token用户数据提交过来之后检查所提交的token是否和服务端存放的token一致,若不一致,则应视为发生了CSRF攻击,该次请求无效。

在服务器和浏览器端都实现了利用origin字段的方法来防止CSRF攻击

转载于:https://my.oschina.net/u/347414/blog/1528604

你可能感兴趣的文章
模拟select控件&&显示单击的坐标&&用户按下键盘,显示keyCode
查看>>
CodeBlocks 安装和使用
查看>>
Mac-OSX下Ruby更新
查看>>
jsp九个内置对象
查看>>
[Python笔记][第一章Python基础]
查看>>
Bloomberg SEP 12.x 迁移小记
查看>>
操作数据库(防注入攻击)
查看>>
生日小助手V1.1发布了——拥有更整齐的信息列表
查看>>
代理模式
查看>>
Qt 学习(1)
查看>>
MFC CEdit改变字体大小的方法
查看>>
java 中文数字排序方法
查看>>
centos 关于防火墙的命令
查看>>
openstack 源码分析
查看>>
ZOJ3861 Valid Pattern Lock(DFS||打表+枚举)
查看>>
pylint
查看>>
1025 选菜
查看>>
Debug 和 Release 编译方式的本质区别
查看>>
结构体
查看>>
Redis学习笔记~把redis放在DATA层,作为一种数据源,我认为更合理,也更符合我的面向对象原则...
查看>>