验证码与该网页绑定
我想做一个与验证码与页面绑定的页面,应该如何做?
比如,一个页面里有验证码,但必需同时访问这个面页与显示验证码之后才能提交内容!!这样不知道,能不能有效防止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