当前位置: 首页 > 图文教程 > 网络编程 > ASP > 加密QueryString数据

ASP
飞云写的防CC攻击的ASP程序插件 打包下载
随机调用n条数据的方法分析
一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)
asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题
实现纯真IP txt转mdb数据库的方法
用实现ASP批量删除目录及文件的代码
[ASP]RegExp对象提供简单的正则表达式支持功能使用说明
用ASP生成UTF-8网页文件的两种方法
asp利用fso给文件夹和文件改名的代码
asp 采集实战代码
解决采集时出现msxml3.dll 错误的方法
asp实现二进制字符串转换为Unicode字符串
asp 用InStr查找特定字符串的代码
[推荐]ASP编程通用函数收藏大全
去除HTML代码中所有标签的两种方法
asp Chr 函数 数字转字母的方法
asp快速开发方法之数据操作实例代码
asp去除所有的超级链接的两种方法 替换与正则
asp下实现截取字符串特定部分内容函数
asp下取得客户端IP地址函数 转换IP地址函数

ASP 中的 加密QueryString数据


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 198 ::
收藏到网摘: n/a

  Problem with Query String Method  
Often time we use query string collection to retrieve an unique record from a table. Notice the following
piece of code -

Detail.asp?RecordID=200

Here we are passing a query string value called "RecordID" using the url. We then use the Query String collection "RecordID" to get the actual number -

<%
Dim RecordID
RecordID = Request.QueryString("RecordID")
%>

The problem with the above method is that we are exposing "RecordID" to the public. Hence making easy to hackers to just change the RecordID Query string to retrieve other values of the table.

Solution to the above problem

In order to solve the above problem, we will use two ASP pages and the ASP random number function to scramble the passing query string value so that the real record number is not exposed to others.

On the first page we get a random number with the following code -

<%
Randomize timer
' Randomizing the timer function
rndNum = abs(int((rnd() * 3001)))
' To generate a prime based,  non-negative random number..
rndNum = rndNum + 53
Session("rndNum") = rndNum
'We place the random number value in a session variable so that we can use it again in the next page %>

Now that we have our random number we will scramble our query string with it! Here is how -

<%
'Assuming you have a record set retrieved -
Display_Rs.movefirst
While not Display_Rs.Eof
Response.Write "<a href=detail.asp?RecordID="
Response.Write (Display_Rs("RecordID")*rndNum)
' Notice we are multiplying the actual record number with the random number to scramble the query 'string
Response.Write Display_Rs("RecordID") & "</a>"
Display_Rs.Movenext
Wend
%>

In the next page we will un-scramble the query string! Here is how -

<%
Dim RecordID
RecordID = request.querystring("RecordID")/Session("rndNum")
' We are dividing the record ID query string value with the same formula to un-scramble and pass the
actual record ID to the SQL statement
Session.abandon
' Releasing Session value for the next record
%>

That's it! Using the above method you can scramble a query string as much as you like. For example multiply the random number with a very complex formula to generate an even more difficult integer number.
The key point here is you divide  the number with the same formula yielding to the original value. This technique is not full proof but much more difficult to break in that passing a regular query string value.