基本介绍
JSONP(JSON With Padding)是基于JSON格式的为解决跨域请求资源而产生的解决方案,它实现的基本原理是利用了HTML里<script></script>元素标签,远程调用JSON文件来实现数据传递,如果要在a.com域下获取存在b.com的JSON 数据(getUsers.JSON):
{"id":"1","name":"知道创宇"}
那么可以首先通过JSONP中"Padding"来getUsers.JSON,输出结果:
callback({"id":"1","name":"知道创宇"});
对于实际应用过程中callback的名称在后台实现是动态输出的,如上面的例子在php实现:
<?php
//getUser.php
$callback = $_GET['callback'];
print $callback.'({"id":"1","name":"知道创宇"})';
?>
然后再a.com中使用<script>进行远程调用,在JQuery里可以直接这样调用:
<script type="text/javascript" src="http://mini.jiasule.com/framework/jquery/1.9.1/jquery-1.9.1.js
本文详细介绍了JSONP(JSON With Padding)的基本原理及其存在的安全风险,包括JSON劫持和如何利用空Referer或Referer过滤不严谨进行攻击。通过实战案例展示了攻击过程,并提出了防御措施,如限制Referer、设置Content-Type、过滤callback函数名等。
订阅专栏 解锁全文
441

被折叠的 条评论
为什么被折叠?



