再现理想 发表于 2015-1-16 23:18:15

ASP网页编程之加密QueryString数据

写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小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,就可以随心所欲地控制网页变换和响应用户动作了。

小妖女 发表于 2015-2-6 10:15:30

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

飘飘悠悠 发表于 2015-2-15 23:19:09

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

若相依 发表于 2015-3-4 18:12:24

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

爱飞 发表于 2015-3-11 20:34:39

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

分手快乐 发表于 2015-3-19 11:54:31

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

变相怪杰 发表于 2015-3-27 23:10:24

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
页: [1]
查看完整版本: ASP网页编程之加密QueryString数据