ASP编程:Cookies 棍骗毛病的提防(vbs+js 完成)
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。1、打击道理Cookies棍骗次要使用以后收集上一些用户办理体系将用户登录信息贮存在Cookies中这一不平安的做法举行打击,其打击办法相对SQL注进毛病等毛病来讲绝对要“坚苦”一些,但仍是很“傻瓜”。
我们晓得,一样平常的基于Cookies的用户体系最少会在Cookies中贮存两个变量:username和userlevel,个中username为用户名,而userlevel为用户的品级。当我们的扫瞄器会见ASP页面时,它会传出相似
以下为援用的内容:
GET/.../file.aspHTTP1.0
...
Cookies:username=user&userlevel=1
...
的数据包,那末,我们只需晓得了办理员的username和userlevel值(假定分离为admin和5),即可以经由过程传输
GET/.../file.aspHTTP1.0
...
Cookies:username=admin&userlevel=5
...
来猎取办理员权限。很复杂是否是?但是,在这个毛病被发明之前,几近一切的用户办理体系都依附于Cookies。
2、平安地贮存用户信息
既然Cookies是不平安的,而我们又必需把用户登录信息存储上去,那末应当存储在甚么中央呢?
我们注重到,在ASP中,除Cookies外,另有Session能够贮存信息。Session是贮存在服务器上的,不是客户端马马虎虎就可以够变动的,以是具有极高的平安性。如许,人人就能够把一切Cookies的代码均换作session了。
3、长工夫贮存用户信息
接纳Session来保留用户登录信息,固然挣脱了Cookies棍骗的成绩,可是Session不克不及临时贮存(IIS默许Session在用户中断呼应20分钟后生效),因而发生了这一节所述的Cookies+session夹杂存储法。
这一办法有两个变种,第一种是在Cookies中贮存用户名和暗码,当用户会见一个页面时,先读取Session,假如有内容则以Session为准,不然读取Cookies,依照Cookies中供应的用户名和暗码举行“不通明”的登录一次,用以判别Cookies中的内容是不是正当,若正当再进而存进session中。完成这一办法的代码以下:
以下为援用的内容:
VBs:
<%
Dimusername,password
username=session("username")
ifusername=""then
session中没有效户登录信息
username=Request.Cookies("username")
password=Request.Cookies("password")
注重下面的两句失掉的username和password要举行SQL注进毛病的提防(即过滤失落单引号“”),这里略往
ifusername=""orpassword=""then
用户没有登录
...
else
这里假定已创立了conn和rs工具
rs.Open"SELECTTOP1*FROMWHEREusername="&username&"ANDpassword="&password&"",conn,1,3
ifrs.eofthen
Cookies中的信息不法
...
else
Cookies中的信息正当,主动登录
session("username")=username
...
endif
endif
else
用户信息已存在于session中,间接读取
...
endif
%>
js:
<%
varusername,password;
username=session("username")+"";
if(username==""||username=="undefined"){
//session中没有效户信息
username=Request.Cookies("username")+"";
password=Request.Cookies("password")+"";
//注重下面的两句失掉的username和password要举行SQL注进毛病的提防(即过滤失落单引号“”),这里略往
if(username==""||username=="undefined"||password==""||password=="undefined"){
//用户没有登录
...
}
else{
//这里假定已创立了conn和rs工具
rs.Open("SELECTTOP1*FROMWHEREusername="+username+"ANDpassword="+password+"",conn,1,3);
if(rs.eof){
//Cookies中的信息不法
...
}
else{
//Cookies中的信息正当,主动登录
session("username")=username+"";
...
}
}
}
else{
//用户信息已存在于session中,间接读取
...
}
%>
可是这类办法关于用户来讲又不太平安,缘故原由是扫瞄器每次会见页面时城市把Cookies传输已往,而包括暗码的Cookies一旦被别人猎取将招致用户帐号被盗。关于这类情形,又呈现了第二种办法,即在用户信息数据库中增添一个字段“verifycode”,在用户登录时,随机发生一个长整型校验值存进verifycode字段,而且将username和这个verifycode值而不是password存进Cookies。而在考证Cookies中的用户信息时,也只考证username和verifycode。这类办法的优点在于,即便用户的Cookies被黑客猎取,他也只能使用这个“一时”发生的verifycode登录,而没法取得用户的暗码。只需此用户再一次利用用户名和暗码登录,这个verifycode值便会改动,黑客便没法经由过程本来的verifycode登进。
这类办法的完成只必要在上述办法一的代码上略加修改。起首,在您的登录程序中,在考证经由过程存储用户信息的中央必要加上一段:
以下为援用的内容:
VBs:
<%
Response.Cookies("verifycode")=int(rnd*2100000000)
%>
js:
<%
Response.Cookies("verifycode")=Math.floor(Math.random()*2100000000);
%>
然后,在下面供应的考证代码中把对Cookies("password")的考证改成对Cookies("verifycode")的考证便可。
4、结论
经由过程我们的剖析和处置,Cookies棍骗毛病已被完整办理,今后,我们的ASP程序变得加倍平安了。
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
页:
[1]