对一个链接里面未加密的参数进行加密,其中有json对象

代码:

  protected string FormatUrlEncode(string url)
        {
            string result = string.Empty;
            if (url.IndexOf("?") < 0) return result;
            string domain=url.Split(‘?‘)[0].ToString();
            string paras = url.Split(‘?‘)[1].ToString();
            string[] para = paras.Split(‘&‘);
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.Append(domain+"?");
            foreach (var pa in para)
            {
                string name = pa.Split(‘=‘)[0];
                string value = pa.Split(‘=‘)[1];
                if (value.Contains (‘[‘)&&value.Contains (‘]‘)&&value.Contains (‘{‘)&&value .Contains (‘}‘))
                {
                    string content = value.Substring(1, value.Length - 2);
                    List<string> list = new List<string>();
                    //这里不能用逗号,因为对象属性间也是逗号
                    if(content.Contains("},{"))
                    {
                        list = Regex.Split(content, "},{").ToList();
                        list[0] = list[0].Substring(1, list[0].Length - 1);
                        int index = list.Count() - 1;
                        list[index] = list[index].Substring(0, list[index].Length - 1);
                    }
                    else
                    {
                        list.Add(content.Substring(1, content.Length - 2));
                    }
                    strBuilder.Append(name + "=[");
                    foreach (var l in list)
                    {
                        //这里的l对象是去除掉{,}的属性集
                        strBuilder.Append("{");
                        string[] jsons = l.Split(‘,‘);
                        foreach (var j in jsons)
                        {
                            //当val是个链接,内部含有冒号时,会少数据
                            string[] vals = j.Split(‘:‘);
                            string key = j.Split(‘:‘)[0];
                            string val = j.Split(‘:‘)[1];
                            //排查http://www.baidu.com
                            if (vals.Length > 2)
                            {
                                val = j.Substring(key.Length+1, j.Length - key.Length-1);
                            }
                            strBuilder.Append(key + ":" + HttpUtility.UrlEncode(val) + ",");
                        }
                        strBuilder = strBuilder.Remove(strBuilder.Length - 1, 1);
                        strBuilder.Append("}");
                        strBuilder.Append(",");
                    }
                    strBuilder = strBuilder.Remove(strBuilder.Length - 1, 1);
                    strBuilder.Append("]&");
                }
                else
                {
                    strBuilder.Append(name + "=" + HttpUtility.UrlEncode(value) + "&");
                }
            }
            strBuilder = strBuilder.Remove(strBuilder.Length - 1, 1);
            return strBuilder.ToString();
        }

链接:

http://www.baidu.com?blabel=&buid=&createTime=2015-01-16 10:02:42&customerAddress=&customerComment=&customerMobile=&customerName=&orderList=[{"agentName":"携程","itemAmount":2,"itemId":3022641,"itemImgUrl":"","itemName":"同程测试资源01","itemOrderDetail":"","itemOrderDetailWap":"","itemOrderTime":"2014-12-10","itemPrice":10000,"itemUrl":"http://piao.ctrip.com/dest/t12.html","itemUrlWap":"http://m.ctrip.com/webapp/ticket/dest/t12.html"}]&orderName=
同程测试产品&partnerId=Ctrip&payWay=在线支付&srcOrderId=1800000009&status=104&totalAmount=11000&key=baidulvyou_wangyonghui
时间: 2024-08-10 21:38:19

对一个链接里面未加密的参数进行加密,其中有json对象的相关文章

解决 400 请求参数不合法(请求参数为json对象-&gt;转为普通参数)

乐优商城中新增品牌时,报400:请求参数不合法 如果用json对象接收,是需要加@ResponseBody注解的. $qs.stringify(params)把json对象转换为普通字符串 $qs.parse(params) 把普通字符串转换为json对象 原文地址:https://www.cnblogs.com/weiqang/p/12530057.html

记录一个小问题,如果前端传递的参数是加密过的,需要在后台解密

如果前端传递的参数是加密过的,需要在后台解密,有中文等特殊符号需要用到加密: 前端代码: $.ajax({ type: "POST", url: "/init/SaveToDatabase", dataType: "json", async: false, data: decodeURIComponent(JSON.stringify(array)), success: function (result) { var statusCode = r

jmeter通过BeanShell 脚本,实现对http请求参数的加密

jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的自动化接口测试框架.它的好还在于它是纯JAVA开发的,因此,它可以更好的跟JAVA对接,通过引入自己封装的jar文件,可以方便的实现对jmeter各种个性化需求的功能的拓展,下面以一个实际例子来说明jmeter怎么引入自己开发的java工具类来实现对http请求参数的加密处理. 在此之前,我们假设有

针对url参数的加密解密算法(原创)

      基本思路是:前端对参数进行加密,并经过urlrewriter进行地址改写传入后台,后台再进行解密.如:对这样一个url--????http://1.1.1.1:8080/a.do?param=1,加密后变为:http://1.1.1.1:8080/a.do?param='k230101io934jksd32r4',再经过urlrewriter转换可能变为http://1.1.1.1:8080/a/b/k230101io934jksd32r4 ???? 前端加密算法: /* *功能:对

jsencrypt参数前端加密c#解密

写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C#在后端解密,在投票提交分数等H5应用上可以使用的上,并且进行简单的封装. 1.demo <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq

一个链接引发的“恶意执行”

引子:?最近研究算法上瘾了,也分析了一些最新的恶意软件(后续更),今早浏览样本的时候发现一款老病毒,大体分析了一下,还算有趣所以简单分享一下.?病毒分析:?1.解压样本后,只发现了一个链接??链接名叫账号密码,我第一次看到竟然双击了(其实知道有隐藏文件,习惯性的操作很可怕),双击后感觉就中招了,如下所示: ????????????????????图片一:样本?2.右击查看一下链接属性及链接位置,发现是一个该文件夹下vb脚本的快捷方式,调整一下文件夹显示属性:???????????????????

python完成数组格式的请求参数的加密计算

#输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course[0][join_card_afterfour]:043X join_course[0][join_school]:铭博教育咨询 join_course[1][join_tel]:13130999883 join_course[1][join_name]:任学雨 join_course[1][joi

Click Link关键字——模拟单击一个链接

Click Link关键字:模拟单击一个链接: 接受一个参数 [ locator ],locator参数指的是定位界面元素的方式: ========================================================== 示例:单击百度首页的地图链接: Open Browser    http://www.baidu.com    chrome Click Link    http://map.baidu.com                           

aip接口中对url参数md5加密防篡改的原理

目前网上所有开放api的网站中,数据的调用都是采用同一种方式,即: http:www.xxx.com/aa=1&bb=2...,原后对这些参数按字典顺序排序后进行md5加密,将md5加密串与接口方提供的 key接在参数后面提交,如http:www.xxx.com/aa=1&bb=2&sg=md5(...)& key=3432423,服务器端把这些参数接收后以同样的方式生成md5与提交的sg参数核对是否一致,以达到防止篡改与验证合法性的目的. 我现在的疑问是,既然参数可以被篡