我们知道,在aso,net中两个页面中传值,可以用querystring的方法,可是用它并不安全,稍有不慎,会把传送的信息参数的值完全暴露在URL上,多么可怕啊!
<wbr></wbr>
方法一:把表单提交方式改为post
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
<wbr></wbr>
<wbr></wbr>
方法二:代码加密:
1.发送方加密。
Response.Redirect("DetailInfo.aspx?id=" + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("sp10006")).Replace("+","% 2B"));
(中间无空格)
2.接收方解密。
string ID = System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["id"].ToString().Replace("+","% 2B")));
<wbr></wbr>
<wbr></wbr>
在使用 System.Convert.FromBase64String<wbr><wbr>解密时会报异常:Base-64 字符数组的无效长度<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></wbr></wbr>
原理:
加密字符串中的加好“+”在传参时会变成空格“ ”,所以在解密时字符串就无效了
例如:
<wbr><wbr><wbr><wbr> 加密字符串:dN8b8FHDK6lEz2uneeUZk+O/rrHBzaWT</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> 传参后变成:dN8b8FHDK6lEz2uneeUZk O/rrHBzaWT</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> 解密时:不能识别空格:抛FormatException异常</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
解决方案:
在Convert.ToBase64String()<wbr><wbr>加密后<wbr><wbr> 使用String.Replace("+", "% 2B")将<strong><span style="color:#ed1c24; font-size:20px">加号替换为编码,</span></strong></wbr></wbr></wbr></wbr>
然后再作为参数传给另一页面传递,这样页面在提取参数时才会将“+”解码为加号
例如:
<wbr><wbr><wbr><wbr> 加密字符串:dN8b8FHDK6lEz2uneeUZk+O/rrHBzaWT</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> 替换后:dN8b8FHDK6lEz2uneeUZk+O/rrHBzaWT</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> 传参后也是:dN8b8FHDK6lEz2uneeUZk+O/rrHBzaWT</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> 解密时:程序把"+"识别为加号<wbr><wbr> 解密成功</wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
本文给出了简单的.NET中加密与解密QueryString的源代码。
asp.net下Request.QueryString取不到值的解决方法
ASP.NET 中 Request 与 Response 的常用属性方法 在 ASP.NET 中,Request 和 Response 是两个非常重要的对象,它们分别代表了客户端的请求信息和服务器的响应信息。了解 Request 和 Response 的常用属性方法是 ASP...
基于ASP.NET实现的QueryString进行安全加密处理类库函数,采用C#+ASP.NET开发。
ASP.NET页面间数据传递的各种方法和分析 1.使用Querystring 方法 QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进行传递。如页面A.aspx 跳转到页面B.aspx,可以用Request....
asp.net中URL参数传值中文乱码的三种解决办法
asp.net(QUERYSTRING方式)最简单分页代码
也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多语言支持 (一) 应用系统的多语言支持 (二) 自动...
Asp.Net较ASP最大的优点,也是其受到越来越多程序员的欢迎的主要原因就是,ASP.NET为开发者...本文就来介绍二种可以实现ASP.NET中各Web页面数据传递的方法:第一种方法是使用QueryString,第二种方法是使用Session。
asp.net页面通过URL参数传值中文乱码问题解决办法
QueryString助手一个小型库,用于帮助解析和操纵C#中的ASP.NET QueryString参数程式码范例 QueryStringHelper qs1 = new QueryStringHelper ( Request . QueryString ); // initialise from Request....
ASP.NET C#页面传值( Querystring / Session /Server.Transfer /Application /Cookie)实例化的讲解 直观易懂 一看就会
ASP.NET的几种页面传值方法(使用QueryString变量 2. 使用Application 对象变量 3. 使用Session变量 4. 使用Cookie对象变量 ....)
request.params其实是一个集合,它依次包括request.querystring、request.form、request.cookies和request.servervariables。 如果要在两个页面传递数据的话,只能用request.querystring、request.form、request....
ASP.NET常用代码 1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 接收参数: string a = Request....
ASP动态网页制作之request对象的form方法和querystring方法 《ASP动态网页制作》request对象的form方法和querystring方法是 ASP 内建的获取客户端信息的方法。Request 对象是学生开始学习动态网页制作的基础,掌握...
本文将包含使用querystring,session变量以及server.Transfer方法来实现页面间的值传递。 要谢谢 回答者:okfeng100 是他提供
Response.Redirect、QueryString、Session变量三种方法实现页面参数的传递和页面跳转。