日期:2014-05-20  浏览次数:20344 次

验证码与该网页绑定
我想做一个与验证码与页面绑定的页面,应该如何做?

比如,一个页面里有验证码,但必需同时访问这个面页与显示验证码之后才能提交内容!!这样不知道,能不能有效防止httpwebrequest提交!

目前的能力只能给100分,顶者有分..呵

------解决方案--------------------
验证码就是为了防止自动提交而存在的
在页面中嵌入一张验证码图片,同时将与该图片对应的验证码存入Session。当页面提交时,读出用户填写的验证码,与Session对比,如果错误则拒绝访问
------解决方案--------------------
不能使用session。因为这里讨论的是页面,并没有假设页面提交的次序,更没有假设会话中不存在多个页面实例。

简单来说(但是不对),在页面产生的时候在ViewState中就写入了验证吗的“答案”,然后提交的时候将用户输入(例如TextBox中输入)的值与这个ViewState中的项目核对就可以了。

不过既然ViewState可能输出给客户端,那么ViewState中包括简单值就不安全。

你可以使用Session中保存的“会话加密密钥”字符串来加密它。显然这个密钥可以在整个会话中共享不变。

或者,可以产生一个随机串(例如使用Guid)作为key将ViewState项目的值保存在Cache中,而ViewState仅保存这个key,客户端无法得到内容因而也同样无法作假(我采用这种简单方法)。
------解决方案--------------------
有用,学习。
------解决方案--------------------
Mark
------解决方案--------------------
sp1234(咱中国人特别善于现学现卖过段时间就忘)

说的话前后矛盾

第一句话里就说不能使用Session,一会儿自己说的话里都使用了Session了.而且连服务器端的Cache都出来了.据我所知那个Cache是共享使用的...


如果你想在客户端验证的话,不可避免地就要将验证码的值以Html形式发送到客户端,而只要一到了客户端不管你使用再复杂的算法,只要不使用ActiveX控件(那样破解难度大一些).那终究是都有被破解的可能的.

------解决方案--------------------
UP
------解决方案--------------------
五条裤衩的兄弟,你可能有了一点水平,但是不要轻易否定三星的言论,因为他是对的,而且已经说的很清楚了,只能说你没有仔细看。

首先,他说不能使用session,意思是不能使用session来保存验证码,但是“你可以使用Session中保存的“会话加密密钥”字符串来加密它。显然这个密钥可以在整个会话中共享不变。”这句话出现在第四段。

其次,Cache,惭愧,我没有用过。

最后,自始至终,我没有看到他说客户端验证,他一直在强调“提交”、“key”和“无法作假”,session的原理就是利用服务器产生唯一串,并交由cookie进行传递,这个key是服务器端生成的,无法作假。所有提交都是到服务器上进行验证,无法作假。
------解决方案--------------------
由服务器验证的话,复杂了点,安全性不高的话,建议还是客户端,以前弄了个简单的就是ViewState保存,可能sp老大说的有点深,我有些没明白,惭愧。
Cache 保存值,如果有1万了人同时访问的话,服务器压力不是很大吗?
------解决方案--------------------
哦,顶,将来我也这么做先!
------解决方案--------------------
有人说可以把验证码做成一个自定义的控件,放在工具箱中,需要时拖一个出来放在页面上,不再需要用 <IMG SRC= " "> 图片标记去引用一个ASPX页面.


我说这是不可能的.做不到这一点.

各位相信不?
请各位带角带星的老大给出一个明确的答案.
------解决方案--------------------
可以用session,反而viewstate 不好实现. 因为产生图片的页面与登录界面通信最安全的方式就是session viewstate实现不了,用url传参数就不安全,当然如果你加密的话也可. 关于多个页面的实例 ,很多网站都是如此,如果你同时开几个登录窗口,只有最后一个能正常登录, 之前开的验证码都是无效的.
------解决方案--------------------
学习下,帮顶
------解决方案--------------------
http://www.szsoftware.com.cn/showart.asp?id=283