精华内容
下载资源
问答
  • 数据库查询优化-SQL优化1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上...可以修饰对象,还可以修饰基本数据类型....

    数据库查询优化-SQL优化

    1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默 ...

    ios 面试题 0

    1.__block和__weak修饰符的区别:  1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型.  2.__weak只能在ARC模式下使用,也只能修饰 ...

    Pascal向C++的跨越

    最近从pas转向了C++,觉得需要在语言上总结对比一下,以及记录一些注意点,关于STL,还需要之后好好地学习.同时,希望这篇文章对从pas转C++的同学有所帮助. 基本类型 首先是基本类型的比较: P ...

    HDU 2671 Can't be easier

    简单的几何题目 点(a,b)关于直线Ax+By+C=1对称点的公式 #include #include #include

    UML中关联(Association)和依赖(Dependency)的区别

    原文转自:http://blog.csdn.net/metasearch/article/details/2334853 在UMLCHINA精华区,看到了一些关联和依赖的讨论,似乎越讲越糊涂.我想谈一 ...

    [转]scrapy中的request.meta

    作者:知乎用户链接:https://www.zhihu.com/question/54773510/answer/146971644 meta属性是字典,字典格式即{'key':'value'},字典 ...

    小记 xian80 坐标转换 wgs84

    转坐标这个问题是个老生常谈的话题了. 昨天遇到同事求助将 xian80的平面坐标转换到2000下. 想了一下,因为暂时还没有现成的2000的dwg数据可用,只能暂时以wgs84的为准了,然而有个问题, ...

    CentOS 安装开发环境 并安装coTurn

    从官网 https://www.centos.org/download/ 下载镜像文件 从163的镜像站点下载,速度较快 http://mirrors.163.com/centos/7/isos/x8 ...

    AUC计算 - 手把手步进操作

    2017-07-10 14:38:24 理论参考: 评估分类器性能的度量,像混淆矩阵.ROC.AUC等 http://www.cnblogs.com/suanec/p/5941630.html ROC ...

    Internetworking

    1 Introduction 所谓的InternetWorking就是将很多网络连接起来,那么在这种连接的网络下我们该如何传送封包呢? 2 IP and Routers 1 IP Datagram H ...

    展开全文
  • Ajax传输数据加密

    2021-01-11 20:36:41
    ^常用于数据加密 常常使用日期与数据进行异或 c= a ^ b 可以推出 a = b ^ c. (常用于加密) 异或的运算方法是一个二进制运算: 两者相等为0,不等为1. 使用进制形式 防止服务器不是utf8无法解析中文 前端代码 <...

    ^常用于数据加密

    常常使用日期与数据进行异或

        c= a ^ b  可以推出 a =  b ^ c. (常用于加密)
        异或的运算方法是一个二进制运算: 两者相等为0,不等为1.
    

    使用进制形式 防止服务器不是utf8无法解析中文
    前端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="./js/querystrings.js"></script>
    
    </head>
    <body>
      
        <script>
            var str="一爱我的祖国i like javascript";
            一的Unicode 编码为19968
            // var str="一";
            //一 异或之后是19979 下
          var n=new Date().getDate();
            var arr=[];
            for(var i=0;i<str.length;i++){
                arr.push(str.charCodeAt(i)^n);
            }
            var a=new Uint16Array(arr);
            console.log(a);
           /*  console.log(a[0]);
            console.log(String.fromCharCode(a[0])); */
            
          var xhr=new XMLHttpRequest();
            xhr.addEventListener("load",loadHandler);
            xhr.open("POST","http://127.0.0.1:4002/a/");
            // xhr.setRequestHeader('Content-type','application/content');
            xhr.send(a);
    
            function loadHandler(e){
                if(xhr.readyState===4&&xhr.status<400){ 
                   
                }
            }  
         
        </script>
    </body>
    </html>
    

    后端代码实现

    var http=require("http");
    var querystring=require("querystring");
    var req,res,data,type;
    
    init();
    function init(){
        var server=http.createServer(createServer);
        server.listen(4002,"127.0.0.1",listenHandler);
    }
    
    function createServer(_req,_res){
        req=_req;
        res=_res;
        res.writeHead(200,{
            "content-type":"text/plain;charset=utf-8",
            "Access-Control-Allow-Origin":"*",
            "Access-Control-Allow-Headers":"Content-type",
        });
       
        type=req.url.includes("?") ? req.url.split("?")[0].replace(/\//g,"") : req.url.replace(/\//g,"");
        req.on("data",dataHandler);
        req.on("end",endHandler);
    }
    function listenHandler(){
        console.log("开启服务");
    }
    
    function dataHandler(_data){
     var str="";
     // -------16位二进制解析
       var n=new Date().getDate();
       //进制数据是两个一位 且是颠倒的
       for(var i=0;i<_data.length;i+=2){
        //如果某个字符串不够指定长度,会在头部或尾部补全。
       //padStart()用于头部补全,padEnd()用于尾部补全。
        var a=_data[i+1].toString(16).padStart(2,"0");
        var b=_data[i].toString(16).padStart(2,"0");
        var s=parseInt(a+b,16);
        console.log(s);
       
           str+=String.fromCharCode(s^n);
       
       }
       console.log(str);
        data=_data+"";
    
    }
    
    function endHandler(){
        if(req.method.toUpperCase()==="GET"){
            data=req.url.includes("?") ? req.url.split("?")[1] : "";
        }
       
        try{
            data=JSON.parse(data);
        }catch(e){
            data=querystring.parse(data);
        }
        var obj=data;
        //  var obj={a:data.a,b:data.b};
        if(type==="a"){
            // obj.sum=Number(data.a)+Number(data.b)
            res.write(querystring.stringify(obj));
        }else if(type==="b"){
            // obj.sum=Number(data.a)*Number(data.b)
            res.write(querystring.stringify(obj));
        } 
        res.end();
    }
    
    展开全文
  • 如此:所有的ajax请求都会通过此$.ajaxSetup({contentType: "application/x-www-form-urlencoded;charset=utf-8",beforeSend: function() { //发送执行的函数try {var params = arguments[1].data; //arguments是...

    //此方法放在公用的js里面即可。如此:所有的ajax请求都会通过此

    $.ajaxSetup({

    contentType: "application/x-www-form-urlencoded;charset=utf-8",

    beforeSend: function() { //发送前执行的函数

    try {

    var params = arguments[1].data; //arguments是一个两个值的数组分别是0和1

    re = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|--|"|=|;|>|

    for(var key in params) {

    console.log(params[key]);

    if(re.test(params[key])) {

    alert("请勿输入非法字符");

    arguments[0].abort(); //终止请求

    //请求方法记录相关日志

    //location.href = params.replace(sQuery, "");//跳转到某个页面

    }

    }

    } catch(e) {

    console.log(e);

    //请求方法记录相关日志

    }

    },

    complete: function(XMLHttpRequest, textStatus) {

    try {

    //通过XMLHttpRequest取得响应头,sessionstatus,

    //var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");

    //if(sessionstatus == "timeout") {

    //如果超时就处理 ,指定要跳转的页面(比如登陆页)

    //}

    //此处可以对响应回来的数据进行解密

    debugger;

    if(textStatus !== "error") {

    //通过XMLHttpRequest取得响应结果

    var res = XMLHttpRequest.responseText;

    var jsonData = JSON.parse(res);

    console.log(jsonData);

    if(jsonData.state == -1) {

    //如果超时就处理 ,指定要跳转的页面(比如登陆页)

    alert(jsonData.msg);

    window.location.replace("/login/index.php");

    } else if(jsonData.state == 0) {

    //其他的异常情况,给个提示。

    alert(jsonData.msg);

    } else {

    //正常情况就不统一处理了

    }

    }

    //请求方法记录相关日志

    } catch(e) {

    console.log(e);

    //请求方法记录相关日志

    }

    },

    error: function(jqXHR, textStatus, errorMsg) { // 出错时默认的处理函数

    try {

    // jqXHR 是经过jQuery封装的XMLHttpRequest对象

    // textStatus 可能为: null、"timeout"、"error"、"abort"或"parsererror"

    // errorMsg 可能为: "Not Found"、"Internal Server Error"等

    // 提示形如:发送AJAX请求到"/index.html"时出错[404]:Not Found

    alert(‘发送AJAX请求到"‘ + this.url + ‘"时出错[‘ + jqXHR.status + ‘]:‘ + errorMsg);

    //请求方法记录相关日志

    } catch(e) {

    console.log(e);

    //请求方法记录相关日志

    }

    },

    statusCode: { //自定义返回消息

    404: function() {

    alert(‘数据获取/输入失败,没有此服务。404‘);

    },

    504: function() {

    alert(‘数据获取/输入失败,服务器没有响应。504‘);

    },

    500: function() {

    alert(‘服务器有误。500‘);

    }

    },

    //因为 jquery 在 GET 方法中会自动把 data 附加在 url 后面,所以将 processData 设置为 false 之后 url 后面会出现 [object object] ,这是 javascript 对象 toString() 过后的结果,也就是说我们的这个方法并不很适合 GET 方法

    processData: false, //默认不序列化参数//dataFilter:对响应的数据进行过滤

    });

    原文:https://www.cnblogs.com/Mr-lin66/p/9655881.html

    展开全文
  • AJAX加密提交数据

    2020-11-27 11:52:36
    今天用ajax在前台传递数据,为了避免数据被篡改保证安全,做了一个签名限制。 页面需要引入md5.js文件 1.时间戳来做处理随时更新 2.用键值对拼接 加密 转大写 JQ代码 //ajax部分 var data = {user_name:user_name,...

    今天用ajax在前台传递数据,为了避免数据被篡改保证安全,做了一个签名限制。
    页面需要引入md5.js文件
    1.时间戳来做处理随时更新
    2.用键值对拼接 加密 转大写
    JQ代码

    //ajax部分
    var data = {user_name:user_name,short_company_name:user_name,mobile:mobile,user_passwd:user_passwd,code:code,city_id:city_id};
       	getSignature(data)
        $.post("/php/tijiao/", {data:data}, function (data) {
            var data = JSON.parse(data);
            if (data.resultId == 0) {
                window.location.href = data.Data;
              	return false;
            }
        })
    //封装加密
    function getSignature(data){
    	data.timestamp =  (new Date()).valueOf();
        requestJson = ksort(this, data, '');
        requestStr = getRequestStr(requestJson);
        requestStr = requestStr.substr(1, requestStr.length);
        //תmd5 + 转大写
        data.signature = $.md5(requestStr).toUpperCase();
        return data;
    }
    //ASCII 排序
    function ksort(vm, inputArr, sort_flags) {
        var tmp_arr = {},
            keys = [],
            sorter, i, k, that = vm,
            strictForIn = false,
            populateArr = {};
    
        switch (sort_flags) {
            case 'SORT_STRING':
                // compare items as strings
                sorter = function (a, b) {
                    return that.strnatcmp(a, b);
                };
                break;
            case 'SORT_LOCALE_STRING':
                // compare items as strings, original by the current locale (set with  i18n_loc_set_default() as of PHP6)
                var loc = vm.i18n_loc_get_default();
                sorter = vm.php_js.i18nLocales[loc].sorting;
                break;
            case 'SORT_NUMERIC':
                // compare items numerically
                sorter = function (a, b) {
                    return ((a + 0) - (b + 0));
                };
                break;
            // case 'SORT_REGULAR': // compare items normally (don't change types)
            default:
                sorter = function (a, b) {
                    var aFloat = parseFloat(a),
                        bFloat = parseFloat(b),
                        aNumeric = aFloat + '' === a,
                        bNumeric = bFloat + '' === b;
                    if (aNumeric && bNumeric) {
                        return aFloat > bFloat ? 1 : aFloat < bFloat ? -1 : 0;
                    } else if (aNumeric && !bNumeric) {
                        return 1;
                    } else if (!aNumeric && bNumeric) {
                        return -1;
                    }
                    return a > b ? 1 : a < b ? -1 : 0;
                };
                break;
        	}
    
        // Make a list of key names
        for (k in inputArr) {
            if (inputArr.hasOwnProperty(k)) {
                keys.push(k);
            }
        }
        keys.sort(sorter);
        // BEGIN REDUNDANT
        vm.php_js = vm.php_js || {};
        vm.php_js.ini = vm.php_js.ini || {};
        // END REDUNDANT
        strictForIn = vm.php_js.ini['phpjs.strictForIn'] && vm.php_js.ini['phpjs.strictForIn'].local_value && vm.php_js
            .ini['phpjs.strictForIn'].local_value !== 'off';
        populateArr = strictForIn ? inputArr : populateArr;
    
        // Rebuild array with sorted key names
        for (i = 0; i < keys.length; i++) {
            k = keys[i];
            tmp_arr[k] = inputArr[k];
            if (strictForIn) {
                delete inputArr[k];
            }
        }
        for (i in tmp_arr) {
            if (tmp_arr.hasOwnProperty(i)) {
                populateArr[i] = tmp_arr[i];
            }
        }
        return strictForIn || populateArr;
    }
    function getRequestStr(obj) {
        var str = '';
        $.each(obj, function (index, value) {
            if(value){
                if(str){
                    str += '&'+ index + '=' + value;
                }else{
                    str += '?'+ index + '=' + value;
                }
    
            }
        });
        return str;
    }
    
    

    PHP后台处理

    public function tijiaoAction(){
        $params_post = $this->getRequest()->getPost();    
    	$post_data = $params_post['data'];
    	//防刷验证
    	if($this->checkSignature($post_data)){
    		//验证成功
    	}
    }
    //验证方式
    private function checkSignature($data){
          $requestStr = '';
          ksort($data);
          if(!isset($data['signature'])){
              return false;
          }
          if(time() - $data['timestamp'] > 60*1000){
              return false;
          }
          foreach ($data as $key => $value){
          	  //这里做了一个去空处理 所以前端有无数据都可以传过来
              if(!in_array($key, ['s_log_time', 'signature', 'request_url']) && !empty($value)){
                  $requestStr .= empty($requestStr) ? $key.'='.$value: '&'.$key.'='.$value;
              }
          }
          $requestStr = strtoupper(md5($requestStr));
          if($requestStr != $data['signature']){
              return false;
          }else{
              return true;
          }
      }
    
    展开全文
  • ajax封装及其数据加密

    2019-08-02 18:02:47
    //加密 var encrypt = function (jsonObj) { let jsonString = JSON.stringify(jsonObj) jsonString = genRandomString(8) + jsonString let tempKey = enc.Utf8.parse(key) let tempIv = enc.Utf8.parse(iv) ...
  • AJAX+REA实现后台数据交互的加密解密1、创建js文件Encryption.js/** *加密解密 */ /**RSA加密用生成key*/ functionbodyRSA(){ /**1024位的key参数写130,2014位的key参数写260*/ setMaxDigits(130); /**ajax...
  • 最近工作中,前端联调后端接口请求的数据是 JSON 格式的明文,考虑到安全问题,与后端同事沟通协调后,规定前端采用 3DES 对请求数据加密,后端接收到请求后再用 3DES 进行解密。 二、效果图 三、具体实现 ...
  • 项目场景: 在前后端分离,前端使用Axios 或者是Ajax 来发送数据和接收数据,对应非程序人来说就没有有,应为他们也不懂,对应懂程序地来说 ...加密方法 使用原生JS数据加密(前后端统一方法进行转码解码)TS兼容JS语法
  • 如此:所有的ajax请求都会通过此 $.ajaxSetup({ contentType: "application/x-www-form-urlencoded;charset=utf-8", beforeSend: function() { //发送执行的函数 try { /** * 当 processData: false,...
  • asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。 原文:asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。 ...
  • 基于 Base64 的加密解密 安装依赖 npm install --save js-base64 在 main.js 中引入 let Base64 = require("js-base64").Base64; 使用 在 main.js 中通过把方法挂载到 vue 原型对象 prototype 上,其中参数以...
  • ResponseBodyAdvice 可以操作controller方法返回的值,例如可以封装成统一的Result格式、对数据进行加密。 备注:RequestBodyAdvice 和ResponseBodyAdvice 的supports方法里面是判断代码是否进入beforeBodyRead、...
  • 文章转自VUE+Axios请求加安全级别(加密、签名、时间戳)与java服务端解析 文章目录前端后端使用 前端 封装加密工具,这个是引用了crypto.js,通过npm安装 npm i --save crypto-js 通过crypto-js实现 加解密工具 ...
  • AJAX跨域请求json数据的实现方法 这篇文章介绍了AJAX跨域请求json数据的实现方法,有需要的朋友可以参考一下 我们都知道,AJAX的一大限制是不允许跨域请求. 不过通过使用JSONP来实现.JSONP是一种通过脚本标记注入的...
  • Ajax异步数据抓取

    2019-10-07 20:10:19
    1.简介 1 有时候我们在用requests抓取页面的时候,得到的结果可能... 3 都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据后生成的结果,这些数据的 4 来源有多种,可能是通过ajax加载的,可能...
  • Ajax

    2020-07-25 09:13:07
    如何使用ajax – 完整实现按一个ajax的异步调用和局部刷新,三步: 创建XMLHttpRequest对象,也就是创建一个异步调用对象 – 创建XMLHttpRequest对象 创建一个新的http请求,并执行该http请求...发送ajax请求 创建请求
  • WEB 请求处理二:Nginx 请求 反向代理

    千次阅读 2018-12-10 14:57:54
    本文将讲述请求到达反向代理服务器的一个处理过程,比如:在Nginx中请求的反向代理处理流程,请求都是经过了哪些模块,做了哪些处理,又是如何找到应用服务器呢? 为直观明了,先上一张图,红色部分为本章所述模块...
  • 前言 前后端分离的开发模式下,API是暴露给客户端(浏览器)的。如果不做任何访问限制,那么任何人都...前后端分离的开发模式下,要进行统一异常处理,其中要统一数据的返回格式,具体方法可参考慕课网课程:Spring...
  • ajax

    2020-02-26 12:51:04
    ​ 1,服务器:服务器就是一台计算机,用于处理请求并通过Internet或本地网络将数据传送到另一台计算机 上,服务器的配置要比普通的计算机配置高出很多 ​ ​ 2,客户端:也就是用户端,与服务器相对于为客户提供...
  • 数据网络传输加密解密问题

    千次阅读 2017-10-16 20:45:19
    数据传输的时候,如果是get请求,是需要人为的对数据进行base64加密,然后在用urlEncode加密的,防止中文等乱码问题; 如果是post请求,不需要对数据进行人为的加密。 点评ortant; LETTER-SPACING: normal; ...
  • Http协议请求响应处理

    千次阅读 2017-01-17 15:22:02
    HTTP的基本概念 HTTP(HyperText Transfer Prototcol,超文本传输协议)是Internet上应用最为广泛的一种... ...一个HTTP事务即客户端发出一个“HTTP请求”命令和服务器回复“HTTP响应”结果的过程。 一次HTTP事务完成
  • * @param data 签名数据 */ const sign = (token, timestamp, data) => { // 签名格式: timestamp + token + data(字典升序) let ret = []; for (let it in data) { let val = data[it]; if (typeof val === '...
  • 网页前端JS与后台数据RSA加密传输

    千次阅读 2019-09-06 12:19:49
    段时间介绍了安卓与后台RSA加密传输,后来朋友给我send了一份邮件,希望再整合一篇与网页版数据加密传输,后来小二跟他利用原有的RSA加密工具进行调试,功夫不负有心人,终于有了点成绩。现在给大家一起分享。 ...
  • 本文将讲述请求到达反向代理服务器的一个处理过程,比如:在Nginx中请求的反向代理处理流程,请求都是经过了哪些模块,做了哪些处理,又是如何找到应用服务器呢? 为直观明了,先上一张图,红色部分为本章所述模块...
  • 不知道同学们在做项目的过程中有没有相同的经历呢?在使用 ajax 的时候,需要对请求参数和响应数据进行过滤处理,比如你们觉得就让请求参数和响应信息就这么赤裸裸的在互联网里来回的穿梭,比如这样: 要知道...
  • 在这个地址中,详细介绍了如何接入支付宝接口二、发起请求支付宝的签名方式等不做详细介绍,在开发文档中有详细说明,笔者建议:编码格式请使用UTF-8。接下来的介绍中,主要贴出代码(代码仅供参考)在贴出代码之前,...
  • react-app中引入 数据RSA加密

    千次阅读 2019-02-21 14:44:53
    1. 在 public/js 文件里 新建 jsencrypt.min.js 文件 写入如下代码: (function(){function BigInteger(a,b,c){null!=a&amp;&amp;("number"==typeof a?this.fromNumber(a,b,c):null==b&...
  • * 将业务所有接口统一起来便于维护 * 如果项目很大可以将 url 独立成文件,接口分成不同的模块 * */ // 单独导出(测试接口) import {test} from '@/common/vmeitime-http/' export const test = (data) => ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,377
精华内容 3,750
关键字:

ajax请求前统一处理数据加密