ASP网页编程之加密QueryString数据
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)加密|数据ProblemwithQueryStringMethodOftentimeweusequerystringcollectiontoretrieveanuniquerecordfromatable.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假死,或者消耗掉服务器的内存导致服务器崩溃。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
页:
[1]