zoukankan      html  css  js  c++  java
  • jsonp跨域时如何解决xss漏洞

    解决安全性问题,主要涉及两点:

    (1) 前后端约定jsonp请求的js的回调函数名

    (2) 服务器端指定返回的数据格式为json

    (3) 进行referrer验证 ($_SERVER['HTTP_REFERER'] 中的 host,是否在白名单内)

    以下是事例代码:

    1. 前端js发起ajax跨域jsonp请求:

    $.ajax({
        type: "GET",
        url: "http://xxx.com/getData",
        dataType: "jsonp", 
        jsonp: "callbackParam", //自定义callback参数名称,可将默认的参数名称callback自定义成myCallback等其他名称
        jsonpCallback:"getData", //自定义callback的js函数名
        success: function(data) {
            ...
        }
    });

    2. 服务器端返回数据:

    public function getData(){
        //指定返回的数据格式,以便于可执行js函数
        header("Content-type: application/javascript");
    
        $callback = $this->_param('callbackParam');
    
        //约定只接受某个js回调函数名
        if($callback != 'getData') {
            $callback = 'getData';
        }
    
        $data = array(...);
    
        echo $callback.'('.json_encode($data).')';
        exit;
    }
  • 相关阅读:
    DRF-serializers.Serializer序列化器
    docker 打包容器和导入
    python 打包exex文件
    python 判断ip是否正确 re学习
    快排
    冒泡排序
    二分法查找
    递归实现斐波那契
    排序算法
    迭代器构造斐波那契数列
  • 原文地址:https://www.cnblogs.com/langtao/p/3549272.html
Copyright © 2011-2022 走看看