ASP编程:平安剧本程序的编写 V1.0(2)
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。平安|程序|剧本2.2cookie的成绩2.2.1观点先容
依照Netscape官方文档中的界说,Cookie是在HTTP协定下,服务器或剧本能够保护客户事情站上信息的一种体例。Cookie是由Web服务器保
存在用户扫瞄器上的小广西文件,它能够包括有关用户的信息(如身份辨认号码、暗码、用户在Web站点购物的体例或用户会见该站点的次数)
。不管什么时候用户链接到服务器,Web站点都能够会见Cookie信息。
普通地讲,扫瞄器用一个或多个限制的文件来撑持Cookie。这些文件在利用Windows操纵体系的呆板上叫做Cookie文件,在Macintosh呆板上
叫做magicCookie文件,这些文件被网站用来在下面存储Cookie数据。网站能够在这些Cookie文件中拔出信息,如许对有些收集用户就有些
反作用。有些用户以为这形成了对团体隐私的侵占,更糟的是,有些人以为Cookie是对团体空间的侵犯,并且会对用户的盘算机带来平安性的危
害。
今朝有些Cookie是一时的,另外一些则是延续的。一时的Cookie只在扫瞄器上保留一段划定的工夫,一旦凌驾划定的工夫该Cookie就会被体系清
除。比方在PHP中Cookie被用来跟踪用户历程直到用户分开网站。延续的Cookie则保留在用户的Cookie文件中,下一次用户前往时,仍旧能够
对它举行挪用。
要懂得Cookie,必不成少地要晓得它的事情道理。一样平常来讲,Cookie经由过程HTTPHeaders从服务器端前往到扫瞄器上。起首,服务器端在呼应
中使用Set-Cookieheader来创立一个Cookie,然后,扫瞄器在它的哀求中经由过程Cookieheader包括这个已创立的Cookie,而且反它前往
至服务器,从而完成扫瞄器的论证。比方,我们创立了一个名字为login的Cookie来包括会见者的信息,创立Cookie时,服务器真个Header如
上面所示,这里假定会见者的注册名是"MichaelJordan",同时还对所创立的Cookie的属性如path、domain、expires等举行了指定。
Set-Cookie:login=MichaelJordan;path=/;domain=msn.com;
expires=Monday,01-Mar-9900:00:01GMT
下面这个Header会主动在扫瞄器端盘算机的Cookie文件中增加一笔记录。扫瞄器将变量名为"login"的Cookie赋值为"MichaelJordon"。注重
,在实践传送过程当中这个Cookie的值是经由了URLEncode办法的URL编码操纵的。
这个含有Cookie值的HTTPHeader被保留到扫瞄器的Cookie文件后,Header就关照扫瞄器将Cookie经由过程哀求以疏忽路径的体例前往到服务器
,完成扫瞄器的认证操纵。
别的,我们利用了Cookie的一些属性来限制该Cookie的利用。比方Domain属功能够在扫瞄器端对Cookie发送举行限制,详细到下面的例子,
该Cookie只能转达室到指定的服务器上,而决不会跑到其他的如www.hp.com的Web站点上往。Expires属性则指定了该Cookie保留的工夫期
限,比方下面的Cookie在扫瞄器上只保留到1999年3月1日1秒。固然,假如扫瞄器上Cookie太多,凌驾了体系所同意的局限,扫瞄器将主动对
它举行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪个目次路径下。
申明:扫瞄器创立了一个Cookie后,关于每个针对该网站的哀求,城市在Header中带着这个Cookie;不外,关于其他网站的哀求Cookie是
相对不会随着发送的。并且扫瞄器会如许一向发送,直到Cookie过时为止。
2.2.2要点办法
setcookie-----送出Cookie信息到扫瞄器。
语法:intsetcookie(stringname,stringvalue,intexpire,stringpath,stringdomain,intsecure);
前往值:整数
本函数会随着标识Header送出一段小信息字符串到扫瞄器。利用本函数要在送出HTML数据前,实践上cookie也算标识的一部分。本函数的
参数除第一个name以外,都是能够省略的。参数name暗示cookie的称号;value暗示这个cookie的值,这个参数为空字符串则暗示取
消扫瞄器中该cookie的数据;expire暗示该cookie的无效工夫;path为该cookie的相干路径;domain暗示cookie的网站;secure则
需在https的平安传输时才无效。想失掉更多的cookie信息能够到http://www.netscape.com/newsref/std/cookie_spec.html,由
cookie原创者Netscape所供应的完全信息。
关于一个网站会员而言,常常存在必要一次注册,屡次认证的成绩,比方我们常常打仗到的论坛、社区等,一样平常接纳手腕为cookie或input
type=hidden来传送认证参数。这内里有几点隐患:
I.setcookie内容必需完全包括帐号暗码,或相似的完全平安信息,假如只照顾帐号信息或用某种权限标记来认证,极简单形成不法进侵。
比方某站点中的会员更新页面中照顾的认证信息是两个,用户名和Uid(均为明文传送)已知Uid关于每一个会员是独一的。因为我们只必要晓得对
方的帐号和Uid就能够变动对方信息(不必要晓得暗码!),只需打击者晓得Uid(打击者能够经由过程暴力推测的办法来失掉Uid,偶然候站点自己
也会保守用户的Uid,比方在论坛等处)那末,打击者就能够经由过程遍历打击完成对恣意一个帐号的信息变动。
II.必需一切必要权限操纵的页面都必需实行认证判别的操纵。假如任何一页没有举行这类认证判别,都有大概给打击者以歹意进侵的时机。
III.良多网站为了便利,将用户名和口令信息贮存在Cookie中,有的乃至以明文体例保留口令。假如打击者能够会见到用户的主机,便可能
经由过程保留的Cookie文件失掉用户名和口令。
3.剧本回护的成绩
3.1观点先容
在程序编写时优异的程序员城市晓得,用成心义的变量名,文件名有助于增添程序的可读性,具有优秀的程序作风。这个十分好但在剧本言语不太
合适,为了不让歹意用户猜到你的变量或数据库名等信息,必需改失落这些信息。静态的网页在服务器端实行后前往给客户的是实行后的代码,这可
以回护服务器真个良多不想叫或不克不及叫扫瞄者晓得的信息。平安是绝对的,天天都在有新的平安毛病被发明,假如歹意的用户在你之前晓得了一个
能够看你的剧本源代码的毛病或这个毛病一工夫没法修补怎样办?
3.2主张要点
倡议用一些对照奇异的名字定名,删失落剧本中的正文。假如还必要坚持程序的可读性的话,能够创建一个映照,你能够写个具有优秀作风的剧本程
序,然后再做一个变量名映照创建一个具有较平安定名办法的剧本,往失落这个剧本中的凝视和一切能往失落的信息,修正时作个同步就能够了
我们能够在程序的利用前对程序举行加密,以回护我们本人的程序再万一的情形下部被泄露。
3.3回护办法
我看到过良多的对剧本的加密办法,都很不错,有的是专门的加密软件,有的是经由过程一些技能加上使用言语的特征举行加密的,比方随机天生一个
密匙,把密匙放在"不成见的"中央,经由过程一些算法对剧本举行加解密,就是因为某些体系毛病招致你的剧本源代码泄露,也杯水车薪。
4.实例申明
上面这个例子是在网上常常被提到的,这是个十分典范的例子,以是在这里经由过程这个实例告知人人大概存在的伤害。
成绩形貌:
年夜部分网站把暗码放到数据库中,在上岸考证顶用以下sql,(以asp为例)
sql="select*fromuserwhereusername="&username&"andpass="&pass&"
此时,您只需依据sql机关一个特别的用户名和暗码,如:benor1=1
就能够进进原本你没有特权的页面。再来看看下面谁人语句吧:
sql="select*fromuserwhereusername="&username&"andpass="&pass&"
此时,您只需依据sql机关一个特别的用户名和暗码,如:benor1=1如许,程序将会酿成如许:sql="select*fromusernamewhere
username="&benor1=1&"andpass="&pass&"or是一个逻辑运算符,感化是在判别两个前提的时分,只需个中一个前提建立,那末等式
将会建立.而在言语中,是以1来代表真的(建立).那末在这行语句中,原语句的"and"考证将不再持续,而由于"1=1"和"or"令语句前往为真值.。
别的我们也能够机关以下的用户名:
username=aaorusernameaa
pass=aaorpassaa
响应的在扫瞄器真个用户名框内写进:aaorusernameaa口令框内写进:aaorpassaa,注重这两个字符串两端是没有的。这
样就能够乐成的骗过体系而进进。
详细实行是如许的,起首我会到注册的中央往搜集信息,懂得尽量多的信息,比方方针数据库中都有效户的甚么样的信息,任意的填写信息然后
提交,当你要注册的用户名被注册的是有体系会提醒你已被注册,有的网站做的更好的,就是他们</p>结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
页:
[1]