验证码到底怎么弄?
2015-01-23 10:39
253 查看
不知道你的程序是网络程序,还是单机程序。如果是本地程序的话,要验证码做什么?多此一举。如果是网络程序的话,请看下面:
以上的几个回答,从表面看是实现了验证码,但问题是都是本地生成,本地校验,与服务器无关,那也失败了验证码的实际功能,本地显示等问题是很容易做的。
验证码的功能是不仅仅要验证你的帐号和密码,还要验证服务器返回的一个随机数,注意:这个随机数是要服务器生成的,才能保证有效,为的就是验证别人无法用暴力破解你的网络帐号和密码。所以现在的问题就成了在程序中如果取得服务器返回的验证信息,在WEB中是图片,然而不管是在WEB中应用,还是在程序中应用,都不应该采用字符及明文传输验证信息。否则的话,客户端就可以自行处理了(WEB上传回来的就没有数字或字符验证信息,全是图片)。如果是图片的话,问题又转换成了,客户端程序如何取得服务器端的图片并显示(不通过WEB协议)。
实现起来确实有难度啊。就我个人的观点来说,可以按下面的思路解决:
客户端起动后先连接服务器端,客户端连接服务器时,生成一个随机数,保存在CSocket信息当中(服务器总是要继承CSocket或自定义一个socket类吧),然后向客户端发回和随机数相关的图片文件(注意是图片文件,而不是验证字符),客户端负责解析并显示该图片,客户端再向用户寻问帐号、密码和验证码,然后登录。
上面的流程才使验证码起到实际的做用。
以上的几个回答,从表面看是实现了验证码,但问题是都是本地生成,本地校验,与服务器无关,那也失败了验证码的实际功能,本地显示等问题是很容易做的。
验证码的功能是不仅仅要验证你的帐号和密码,还要验证服务器返回的一个随机数,注意:这个随机数是要服务器生成的,才能保证有效,为的就是验证别人无法用暴力破解你的网络帐号和密码。所以现在的问题就成了在程序中如果取得服务器返回的验证信息,在WEB中是图片,然而不管是在WEB中应用,还是在程序中应用,都不应该采用字符及明文传输验证信息。否则的话,客户端就可以自行处理了(WEB上传回来的就没有数字或字符验证信息,全是图片)。如果是图片的话,问题又转换成了,客户端程序如何取得服务器端的图片并显示(不通过WEB协议)。
实现起来确实有难度啊。就我个人的观点来说,可以按下面的思路解决:
客户端起动后先连接服务器端,客户端连接服务器时,生成一个随机数,保存在CSocket信息当中(服务器总是要继承CSocket或自定义一个socket类吧),然后向客户端发回和随机数相关的图片文件(注意是图片文件,而不是验证字符),客户端负责解析并显示该图片,客户端再向用户寻问帐号、密码和验证码,然后登录。
上面的流程才使验证码起到实际的做用。
相关文章推荐
- python 有class外壳不一定是oop,到底怎么oo?
- 所谓TCP面向连接的虚电路到底是怎么实现的?
- 男人到底要怎么穿
- 人生该怎么才有意义?这么忙碌的活着到底是为了什么!
- 你到底怎么想的?
- 小白被QT5虐了,请问到底怎么发布EXE程序?
- 她们到底发现了什么,元芳你怎么看
- didReceiveMemoryWarning到底应该怎么用
- 疯狂暴涨曾破 2 万美元的比特币,到底是怎么一回事?
- 火爆全球的区块链到底是怎么一回事?一文带你看懂
- cocos2dx FadeIn到底怎么用?
- spring MVC项目中,欢迎页首页根路径到底是怎么设置的
- 职业生涯到底该怎么规划呢?
- 小程序支持打开移动应用到底是怎么回事?
- 第一份工作到底重不重要?怎么选择?
- 火爆全球的区块链到底是怎么一回事?
- CI的验证码代替类库(ci怎么加入验证码)
- 到底C#项目中的BLL,DAL,WEB文件夹是怎么来的呢?
- 我们所在的这个社会到底怎么了
- 浏览器请求阻塞到底是怎么回事?我们为什么要把静态资源分服务器放置?