在网页中,服务器端生成的验证码图片有什么要求,比如字体,颜色,图片大小,干扰线等等
www.baidu.com
一般是因为路径错误,你用F12查一下这个图片的路径是怎么样的,有没有正确调用到你文件夹中的图片
一.常见的验证码1,四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。
2,CSDN网站用户登录用的是GIF格式,目前常用的随机数字图片验证码。图片上的字符比较中规中矩,验证作用比上一个好。没有基本图形图像学知识的人,不可破!可惜读取它的程序,在CSDN使用它的第一天,好像就在论坛里发布了,真是可怜!
3,QQ网站用户登录用的是PNG格式,图片用的随机数字+随机大写英文字母,整个构图有点张扬,每刷新一次,每个字符还会变位置呢!有时候出来的图片,人眼都识别不了,厉害啊…
4,MS的hotmail申请时候的是BMP格式, 随机数字+随机大写英文字母+随机干扰像素+随机位置。
5,Google的Gmail注册时候的是JPG格式,随机英文字母+随机颜色+随机位置+随机长度。
6,其他各大论坛的是XBM格式,内容随机。
二.验证码作用分析
验证码起源:因为攻击者会使用有害程序注册大量的 Web 服务帐户(如 Passport)。攻击者可以使用这些帐户为其他的用户制造麻烦,如发送垃圾邮件或通过同时反复登录多个帐户来延缓服务的速度。在大多数情况下,自动注册程序不能识别此图片中的字符。简单的说呢,就是防止攻击者编写程序,自动注册,重复登录暴力破解密码。验证码技术应运而生。
验证码实现流程:服务器端随机生成验证码字符串,保存在内存中,并写入图片,发送给浏览器端显示,浏览器端输入验证码图片上字符,然后提交服务器端,提交的字符和服务器端保存的该字符比较是否一致。一致就继续,否则返回提示。攻击者编写的robot程序,很难识别验证码字符,顺利的完成自动注册,登录。。。。。。。。。而用户可以识别填写,所以这就实现了阻挡攻击的作用。而图片的字符识别,就是看图片上的干扰强度了。就实际的效果来说,验证码只是增加攻击者的难度,而不可能完全的防止。
1,论坛中的验证码的作用
目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
因为你的WEB站有时会碰到客户机恶意攻击,其中一种很常见的攻击手段就是身份欺骗它通过在客户端脚本写入一些代码,然后利用其客户机在网站论坛反复登陆,或者攻击者创建一个HTML窗体,其窗体如果包含了你注册窗体或发帖窗体等相同的字段,然后利用"http-post"传输数据到服务器,服务器会执行相应的创建帐户,提交垃圾数据等操作,如果服务器本身不能有效验证并拒绝此非法操作,它会很严重耗费其系统资源,降低网站性能甚至使程序崩溃.
而现在流行的判断访问WEB程序是合法用户还是恶意操作的方式,就是采用 一种叫 "字符校验"的技术.WEB网站像现在的动网论坛,他采用达到方法是为客户提供一个包含随即字符串的图片,用户必须读取这些字符串,然后随 登陆窗体或者发帖窗体等用户创建的窗体一起提交.因为人的话,可以很容易读出图片中的数字,但如果是一段客户端攻击代码,通过一般手段是很难识别验证码的.这样可以确保当前访问是来自一个人而非机器.
编程实现原理:使用某种动态编程语言,比如PHP,ASP,随即生成一个随机数,大多为4位数字和字母,或者是数字和字母的组合,生成以后,用GD库的支持生成一张根据随机数来确定的图片,把随机数写入到session中,传递到要验证的页面,生成的图片显示给登陆着,并要求登陆者输入该随机数内容,提交到验证页面,验证session的内容和提交的内容是否一致,这就是大致的思路!那么怎么编写验证码程序呢,相信Google一下,就有很多现成的代码。
2,申请QQ号时候验证码的作用
如今你要申请一个QQ号,需要输入很复杂的验证码:验证码由若干个汉字组成,还加上了花哩唬哨的背景,使得有些汉字实在难以辨认。腾讯这么做,是为了防止有人利用软件批量获取QQ号码----每次提交都要输入随机生成的验证码,这是软件难以做到的。
三.图片验证码技术之一:利用Xbm格式图片
生成验证代码的技术有很多,这里只说与我们论坛有关系的这项技术。
x-xbitmap格式的图片(以下简称为Xbm格式)特殊,就在于它并不跟gif,jpg等图片格式一样,是一个真正的纯2进制图片格式,而是ascii码文件--换句话说,它是一个纯文本文件,在Windows系统下,系统浏览器将它翻译成图片来进行显示。
下面让我们先来制作一个Xbm图形格式图片:
新建一个文本文件,将以下内容复制进去:
#define counter_width 48
#define counter_height 9
static unsigned charcounter_bits[]={ff,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
然后,将此文本文件保存为名字为 test.Xbm的文件。
接下来,让我们看看如果在ie中打开它,会出现什么情形??(新开一个ie,然后将test.Xbm直接拖拽到它上面),哈,出现了如下图一样的情景,在浏览器中出来的,已经不是我们的文本,而是一个黑白的图片了!
让我们看看上面那代码中,每一行的意义:
#define counter_width 48 这里定义了图片的宽度,一般都设置为8的整数倍,因为我们想显示的是6个数字,所以就设置成了8*6=48的宽度
#define counter_height 9 这里设置了图片的高度,可以任意设置,但是注意,这里的数字直接决定了下面的数组中,是用几组数来表示一个显示出的数字
static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
在这里,是图片用来显示内容的十六进制的代码,在这里,是9*6=54个数字来表示,值得一提的是,由于在图片显示中,是显示完了一行后,再显示第2行,直到最后一行,因此更为准确的描述是6*9显示,每6个数表示一行(因为我们显示了6个数字),一共9行(我们的定义中,是采用的高度为9的数组)
正如static unsigned char英文意思为静态的,无符号的,烧焦的。它只能用来显示黑白两种颜色。二进制中的1将来用显示为黑色,0为白色。
因此,上面的7c、3c这样的数字,就是一个256位的2进制,其中的1表示黑色,0表示白色,由此绘制出每个数字的图形。
由于Xbm文件的性质决定,它只能显示黑/白两种颜色,而且以数组的方式来表现每个要显示的图形,注定了不能用它生成太复杂的图案。那么,这样的图片格式到底有什么用呢??当然有的,不少asp论坛/聊天室的登陆验证码,就是用这样的方法在asp中动态生成的。
四.为什么要打补丁才能正常显示呢?
在WindowsXP SP2更改后的安全策略中,因为基于安全因素的考虑,默认去掉了对 image/x-xbitmap 图片格式的支持(该图片的后缀名为Xbm)。,为什么微软在XP的SP2升级包中又要禁止掉它呢??这是因为Xbm的漏洞。
Microsoft Internet EXPlorer和Outlook EXPress在处理WEB页,HTML邮件,EMAIL附件中畸形Xbm图象文件会导致崩溃,问题存在于对Xbm文件中的内容缺少检查,MSIE按照图象规定的长度和宽度分配内存,攻击者可以提高超大的长度和宽度数值导致系统消耗内存或者访问冲突。
换句话说,如果构造一个长宽的尺寸特别大的Xbm文件,很容易导致Windows的内存耗尽,导致程序无响应或者死机。本身来说,这不算一个特别严重的漏洞,因为根据安全公告,无法造成溢出,不会存在太大的权限漏洞。但是由于XP的SP2强调安全性,因此将Xbm功能禁用了。从这点上可以看出,SP2对于安全的确比较重视,将有漏洞的功能基本上都补上或禁用了,作为网络管理员,我对微软的做法表示支持,因为操作系统默认设置的不安全,常常是造成非专业用户被攻击的首要因素。
解禁方法:
由此看出,以后我们访问某些采用生成Xbm作为验证代码的站点的时候,就相当不方便了,如果有必要,可以通过简单的操作注册表恢复我们需要的功能。
打开注册表(开始---运行---regedit----回车),然后进到键值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet EXPlorer\Security]
将blockXbm的值改为00000000(dword,双字节),没有的话新建立一个就可以了。
之后重新IE或者重新启动机器,则Xbm格式的图片就可以看到了。
五,Xbm的趋势
从SP2禁止Xbm的趋势看出,微软打算似乎已经开始打算放弃对Xbm格式的支持了。那么,作为程序编写者,有必要未雨绸缪,寻找其他生成验证码的途径。在php中,可以通过调用gd库等方式生成jpg/gif等图形格式的注册验证码,那么在asp中有其他的办法么?
事实上图片验证密码的关键是--不能在客户端留下图片的真实url,或可对应反推源地址的信息,因此asp可以采用以下2种方式实现支持SP2的图形验证码。
如果是购买的虚拟主机,那么可以采用将jpg/gif图片放到数据库,然后用session传值的方式,最后利用asp直接从数据库中输出图片,这方法的好处是不需要特别设置服务器端,坏处则是每次生成验证图片时都会需要与数据库连接,增加了开销。
没有任何要求,填对进行。
没有要求,直接照着输就行了,不分大小写
“服务器端”与“客户端”分别是什么意思?
不过客户端及伺服端的关系不见得一定建立在两台分开的机器上,同一台机器中也有这种主从关系的存在。提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上执行浏览器浏览本机所提供的网页,这样在同一台机器上就同时扮演伺服端及客户端 ...
服务器页是指包含( )脚本程序的网页
举个例子,一个在线商店的网站可能会使用服务器端脚本来处理用户的购物请求。当用户浏览商品、添加到购物车、进行结算时,服务器端脚本会处理这些请求,与数据库中的商品信息、用户信息和订单信息进行交互,然后动态生成包含用户所选商品、价格、配送信息等内容的网页,返回给用户。常见的服务器端脚本语言包括...
网页一直处于加载中是什么原因?
2. 可能的原因 2.1 服务器故障: 当你打开网站时,你的浏览器会向网站所在的服务器发送请求,如果在这个过程中服务器发生故障,就会导致页面一直处于loading状态。2.2 网络问题: 如果你的网络连接不稳定或者网络质量差,也可能导致访问页面时出现loading状态。2.3 缓存问题: 在你之前访问过的页面...
打开网页时经常出现(当前的网页脚本发生错误)怎么解决
注意:服务器端脚本 -- 如 Active Server pages (ASp) 中的 Visual basic 脚本 -- 运行在 Web 服务器上。因服务器端脚本故障而发生的脚本错误不在 Internet Explorer 中生成错误消息,但也可能会创建一个不能正确显示或工作的网页。本文中的故障排除信息适用于服务器端脚本错误。如果您怀疑服务器端...
服务器端和客户端有什么区别?
1、定义不同:客户端:客户端(Client)或称为用户端,是指向客户提供本地服务的程序,而不是服务器。服务器端:服务器端,从广义上讲,服务器是向网络上的其他机器提供某些服务的计算机系统(如果一个PC对服务器端外提供ftp服务,也可以叫服务器)。2、储存方式不同:客户端:客户端不占用储存空间...
下面哪些是商务网站服务器端技术?A HTML技术B JavaScript术C JSPD...
HTML技术:HTML是用于创建网页的标记语言,它不是服务器端技术,而是在客户端使用的技术。JavaScript技术:JavaScript是一种用于创建动态网页的脚本语言,它可以在客户端和服务器端使用。JSP:JSP(Java Server Pages)是一种服务器端技术,它允许开发人员使用Java代码在网页中动态生成HTML内容。CSS技术:CSS(...
网络客户端和服务端是什么?
因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用...
访问本地服务器(xampp)的网页,总是会产生一个名为PHPSESSID的cookie_百度...
你是不是使用了SESSION(会话)?如果PHP脚本中有:session_start();则说明使用了SESSION。SESSION是一种机制,可以在服务器端跨文件暂时保存数据或传递数据,常用于购物车等方面。SESSION只在用户关闭浏览器之前有效。这就会引出一个问题,PHP是怎样识别不同的SESSION的呢?事实上,每一次SESSION会话都有一...
静态网页与动态网页的区别
动态网页:以asp、jsp、php、perl、cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号问号?静态网页:以htm、html、shtml、xml等形式为后缀。2、程序语言不同 动态网页使用语言HTML+ASP或HTML+PHP或HTML+JSP等。静态网页使用语言HTML(超文本标记语言)。3、程序是否在服务器端运行:动态网页...
如何利用php在网页中实现在服务器新建文件夹并在文件夹中写文件?
thisObj.className = "active";document.getElementById(tabObj+"_Content"+i).style.display = "block";}else{ tabList[i].className = "normal";document.getElementById(tabObj+"_Content"+i).style.display = "none";}
刁陈奥博: 你好!应该对你有帮助的!验证码一般是服务器端生成的图片,在服务端用Session记下字符串 然后客户端将所填的字符串提交到服务端与Session记下字符串进行对比.望采纳.
张家川回族自治县13184266591: 网页一般的验证码怎么实现?js?求代码求原理 - ?
刁陈奥博: 验证码一般是服务器端生成的图片,在服务端用Session记下字符串然后客户端将所填的字符串提交到服务端与Session记下字符串进行对比.
张家川回族自治县13184266591: 在Javaweb中,我用一个jsp页面生成一个验证码图片并用session保存图片上的数字,然后又 - ?
刁陈奥博: 为什么要放在session.太浪费资源.放在request里面.每次请求的时候后台生成一个新的数字就request.setAttribult,页面getAtrribult就可以了.你百度下用法就懂了
张家川回族自治县13184266591: 用html做的一个form+table注册页面里有一个验证码,要怎么写这个js代码?? - ?
刁陈奥博: 可以用JS做个简单的验证码 <script language="javascript">var code; //在全局 定义验证码 function createCode() { //创建验证码函数code = "";var codeLength =5;//验证码的长度var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','...
张家川回族自治县13184266591: 网站登录中的验证码有什么用? - ?
刁陈奥博: 验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功...
张家川回族自治县13184266591: 网页上的图片验证码是如何实现的?
刁陈奥博: jsp实现图片验证码的方法 调用方法<img src="https://img.sogoucdn.com/v2/thumb/?appid=200698&url=http%3A%2F%2Fwww.31km.cn%2FgetImg"> 原理,在servlet中随机生成一个4位数字1000-9999然后把这数字写入session输出一个图...
张家川回族自治县13184266591: 网页制作:网页中登录时出现的验证是怎么实现的(如图)?求详细步骤?谢谢 - ?
刁陈奥博: 有两种方式: 1.纯粹的前台Javascript生成:1.1.将需要用到的数字,字母图片都放置在服务器图片 文件夹中,命名最好对应图片;1.2.使用js随机函数,随机从24个字母和0-9种抽取四个字符;1.3.从js随机函数生成的随机4字符中,对应匹配...
张家川回族自治县13184266591: 网页上的随机验证码是怎样做的. - ?
刁陈奥博: 思想:一个隐藏域保存产生的验证码,一个文本框保存用户输入的验证码,提交后进行对两个表单对象进行对比验证 一、产生验证---获取验证代码--- Function GetValidateCode() Randomize Timer '产生一个随机树 GetValidateCode=Left(Int(Rnd*9998)+1000,4) If Len(GetValidateCode)4 Then GetValidateCode=Len(GetValidateCode&9999,4)End IfEnd Function'---二、调用方法(下面这段代码放到表单里面):
张家川回族自治县13184266591: 网站验证码一般放在服务器端什么地方 - ?
刁陈奥博: 简单点说,验证码生成的时候,先生成随机字符串,这个变量以session的形式存储在服务器内存中,与客户端session-id对应,然后使用GDI+等绘图方式绘制成图片然后输出到页面上,服务端不保存图片只记录字符串用于验证
张家川回族自治县13184266591: 网页制作时登陆的验证码图片怎么和输入数字匹配? - ?
刁陈奥博: 对于ASP来讲,是使用一个session,检查你输入的数字与在调用验证码图片程序里的session是否一致,所以在ASP网站中,如果有验证码的地方,你过了一段时间再登录,全提示验证码不正确,需要刷新,这是session无效了,具体的session名称,你可以在生成验证码图片的asp文件中查找