仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 640|回复: 9
打印 上一主题 下一主题

[学习教程] ASP网页编程之加密QueryString数据

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)加密|数据ProblemwithQueryStringMethod
Oftentimeweusequerystringcollectiontoretrieveanuniquerecordfromatable.Noticethefollowing
pieceofcode-

Detail.asp?RecordID=200

Herewearepassingaquerystringvaluecalled"RecordID"usingtheurl.WethenusetheQueryString
collection"RecordID"togettheactualnumber-

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

Theproblemwiththeabovemethodisthatweareexposing"RecordID"tothepublic.Hencemakingeasyto
hackerstojustchangetheRecordIDQuerystringtoretrieveothervaluesofthetable.

Solutiontotheaboveproblem

Inordertosolvetheaboveproblem,wewillusetwoASPpagesandtheASPrandomnumberfunctionto
scramblethepassingquerystringvaluesothattherealrecordnumberisnotexposedtoothers.

Onthefirstpagewegetarandomnumberwiththefollowingcode-

<%
Randomizetimer
Randomizingthetimerfunction
rndNum=abs(int((rnd()*3001)))
Togenerateaprimebased,non-negativerandomnumber..
rndNum=rndNum+53
Session("rndNum")=rndNum
Weplacetherandomnumbervalueinasessionvariablesothatwecanuseitagaininthenextpage%>

Nowthatwehaveourrandomnumberwewillscrambleourquerystringwithit!Hereishow-

<%
Assumingyouhavearecordsetretrieved-
Display_Rs.movefirst
WhilenotDisplay_Rs.Eof
Response.Write"<ahref=detail.asp?RecordID="
Response.Write(Display_Rs("RecordID")*rndNum)
Noticewearemultiplyingtheactualrecordnumberwiththerandomnumbertoscramblethequerystring
Response.WriteDisplay_Rs("RecordID")&"</a>"
Display_Rs.Movenext
Wend
%>

Inthenextpagewewillun-scramblethequerystring!Hereishow-

<%
DimRecordID
RecordID=request.querystring("RecordID")/Session("rndNum")
WearedividingtherecordIDquerystringvaluewiththesameformulatoun-scrambleandpassthe
actualrecordIDtotheSQLstatement
Session.abandon
ReleasingSessionvalueforthenextrecord
%>

Thatsit!Usingtheabovemethodyoucanscrambleaquerystringasmuchasyoulike.Forexample
multiplytherandomnumberwithaverycomplexformulatogenerateanevenmoredifficultintegernumber.
Thekeypointhereisyoudividethenumberwiththesameformulayieldingtotheoriginalvalue.This
techniqueisnotfullproofbutmuchmoredifficulttobreakinthatpassingaregularquerystringvalue.</p>Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-20 09:23:47 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
乐观 该用户已被删除
板凳
发表于 2015-1-21 07:16:37 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
因胸联盟 该用户已被删除
地板
发表于 2015-1-30 10:56:57 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
小妖女 该用户已被删除
5#
发表于 2015-2-6 10:15:30 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-15 23:19:09 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
若相依 该用户已被删除
7#
发表于 2015-3-4 18:12:24 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
爱飞 该用户已被删除
8#
发表于 2015-3-11 20:34:39 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
分手快乐 该用户已被删除
9#
发表于 2015-3-19 11:54:31 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
变相怪杰 该用户已被删除
10#
发表于 2015-3-27 23:10:24 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-12 09:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表