仓酷云 发表于 2015-1-16 23:44:58

ASP网页设计漫话考证码缘起,程序道理及其他

在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。程序|考证码|考证码注:本文中良多资本来历于Internet,版权和本文作者有关,仅仅援用。

如今,网站上登录,宣布批评。。。。。。。。是个输出框下都有请输出考证码,泡网的人啊,都输出过。假如你想懂得考证码的感化,请先本人Google一下;假如你想制造本人的考证码程序,好比Asp(Asp.net)的,Php的,Jsp的。。。。。。。等等你也能够先Goolge一下。假如你想浏览一下考证码长甚么样的,那好,不必先Google了,看看我找得几个站点的考证码。
1.浏览考证码
我见到的第一个考证码:8723,随机的一数字字符串,最原始的考证码,考证感化几近为零,呵呵。
CSDN网站用户登任命的:,GIF格局,今朝经常使用的随机数字图片考证码。图片上的字符对照中规中矩,考证感化比上一个好。没有基础图形图象学常识的人,不成破!惋惜读取它的程序,在CSDN利用它的第一天,仿佛就在论坛里公布了,真是不幸!
QQ网站用户登任命的:,PNG格局,图片用的随机数字+随机年夜写英笔墨母,全部构图有点声张,每革新一次,每一个字符还会变地位呢!偶然候出来的图片,人眼都辨认不了,凶猛啊…
MS的hotmail请求时分的:,BMP格局,随机数字+随机年夜写英笔墨母+随机搅扰像素+随机地位+???,这个就让你佩服了吧……..不愧是MS老迈啊.假如你看不分明上边的字符了,还能够点下边链接,听语音的读取(注:没有随机背景噪声搅扰的,只是TTS语音)。这个却是很体恤用户!
Google的Gmail注册时分的:JPG格局,随机英笔墨母+随机色彩+随机地位+随机长度(?)+??,呵呵,看起来不错。。。
找了几个,都找累了,最初给人人贴一个很强的考证码字符,是GMAIL的:

(出格申明:这是Javaeye中他人发的,不要误以为是我碰着的,汗啊!!)
浏览完了这些考证码,那这些考证码有甚么用呢,不晓得往Google的同砚了局怎样?
2.考证码感化剖析
我Copy一段MS在Passport匡助中的话:
键进图片中的字符有助于确保是一般用户而不是主动化的程序在填写注册表单。
这一点很主要,由于打击者会利用无害程序注册大批的Web服务帐户(如Passport)。打击者可使用这些帐户为其他的用户打造贫苦,如发送渣滓邮件或经由过程同时重复登录多个帐户来延缓服务的速率。
在年夜多半情形下,主动注册程序不克不及辨认此图片中的字符。
复杂的说呢,就是避免打击者编写程序,主动注册,反复登录暴力破解暗码。。。。。。,
考证码完成流程:服务器端随机天生考证码字符串,保留在内存中,并写进图片,发送给扫瞄器端显现,扫瞄器端输出考证码图片上字符,然后提交服务器端,提交的字符和服务器端保留的该字符对照是不是分歧。分歧就持续,不然前往提醒。
打击者编写的robot程序,很难辨认考证码字符,顺遂的完成主动注册,登录。。。。。。。。。而用户能够辨认填写,以是这就完成了反对打击的感化。
出格申明的是,实在robot制造者也能够往辨认考证码的,以是我说第一种间接输入字符的考证效果几近为零。而图片的字符辨认,就是看图片上的搅扰强度了。
就实践的效果来讲,考证码只是增添打击者的难度,而不成能完整的避免。
不外,不管怎样说,为了体系更平安,接纳考证码也是一种措施,那末怎样编写考证码程序呢,信任Google一下,就有良多现成的代码吧。

3.程序道理
经由过程上边的剖析,出格是流程剖析,信任写出代码是很简单的事变。好比今朝盛行的完成:
服务端文件名:imgcode.*
伪代码:
随机码天生à1.存进Session(“code”)
2.挪用画图函数或是间接写2进制图片格局,内存中天生图片

客户端文件名:login.htm
伪代码:
<formname=”login”action=”check”>
<inputtype=”text”name=”checkcode”value=””/><imgsrc=”imgcode.*”/>
</form>
服务端文件名:checekcode.*
伪代码:
if猎取客户端checkcode的值=Session(“code”)
{
ok
}
else
{
err
}
基础的完成就是如许了,实在就是考证码图片的天生部分,校验部分。为了增强防伪码的感化,关头的中央是到场搅扰,图片天生。
4.考证码中图象手艺会商
今朝盛行的WEB开辟服务器端手艺中,良多都有画图的API函数,天生图片的代码也就很复杂了,就未几提了。这里用没有内置画图函数Asp,会商依据已知图片格局,写进2进制数据,天生图片,先乱弹点图形图象的器材。
我们看下图:
1111011111
1100011111
1111011111
1111011111
1111011111
1111011111
1111011111
1111011111
1111011111
1100000111
假如我们把上边的0和1的地位想成彩灯,0暗示灯亮,1暗示等灭,那末酿成下图:

1111011111
1100011111
1111011111
1111011111
1111011111
1111011111
1111011111
1111011111
1111011111
1100000111
0地点地位构成了一个”1”字。假如在电子手艺上,上图就能够当作一个10x10的点阵。一样的,显现屏也能够看做一个个的点构成。我们输入一组01的旌旗灯号,明暗相间构成一个图象,就是最复杂的口角位图。复杂的显现道理就是如许了。
设想有一团体在把持一组10*10的灯,他使用灯的明暗来显现一个“1”字,那末他用甚么样的按次顺次开灯呢。将灯分红程度偏向和竖直偏向,从左下角的第一个入手下手,先左到右程度偏向把持灯,一行完成后,再向上,顺次举行,最初抵达右上角停止。
在电子手艺上,我们把如许的举措成为行扫描和场扫描,对应形貌的行频和场频(革新频次)就是权衡显像管优劣的主要目标(跑题???)。假如我们用程序把持在屏幕的一块地区(图象巨细)中按上边的扫描办法,依据如许一串2进制字符“1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111”,将0的地位用红色显现,其他的地位则是玄色,那末我们就输入了一个黑底白字的“1”的图象。固然,假如在windows中显现图象,还要遵守图象的格局尺度,不然是没法被体系辨认的,以是还要加上暗示图象格局自己的信息(图象头)。
铝苏饷炊啵颐抢纯匆桓鼍咛宓纳BMP格局考证码的代码(本代码是依据网上的一个代码简化的,版权回原作者):
天生考证图片文件:checkcode.asp
<%
’本代码来历网上代码
’版权回原作者
’为申明道理往失落了杂点天生
’自己不负任何义务
CallCom_CreatValidCode()
SubCom_CreatValidCode()
’克制缓存
Response.Expires=-9999
Response.AddHeader"Pragma","no-cache"
Response.AddHeader"cache-ctrol","no-cache"
Response.ContentType="Image/BMP"
Randomize
Dimi,ii,iii
ConstcAmount=36’笔墨数目
ConstcCode="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
’色彩的数据(字符,背景)
DimvColorData(2)
vColorData(0)=ChrB(0)&ChrB(0)&ChrB(0)’蓝0,绿0,红0(玄色)0的地位色彩
vColorData(1)=ChrB(255)&ChrB(255)&ChrB(255)’蓝250,绿236,红211(红色)1的地位色彩
’随机发生字符
DimvCode(4),vCodes
Fori=0To3
vCode(i)=Int(Rnd*cAmount)
vCodes=vCodes&Mid(cCode,vCode(i)+1,1)
Next
session("CheckCode")=vCodes’纪录进Session
’字符的数据
DimvNumberData(36)
vNumberData(0)="1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
vNumberData(1)="1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
vNumberData(2)=</p>asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!

兰色精灵 发表于 2015-1-20 11:39:31

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

精灵巫婆 发表于 2015-1-29 06:59:14

掌握asp的特性而且一定要知道为什么。

爱飞 发表于 2015-1-29 23:55:37

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

飘飘悠悠 发表于 2015-2-6 07:19:37

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

只想知道 发表于 2015-2-15 14:18:20

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

小魔女 发表于 2015-3-11 19:20:31

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

小妖女 发表于 2015-3-19 09:32:44

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

透明 发表于 2015-3-27 17:10:07

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
页: [1]
查看完整版本: ASP网页设计漫话考证码缘起,程序道理及其他