Session & Cookie 的使用建议(zz)

最近开始折腾 ASP.NET MVC 和 JavaScript,陆陆续续从网上下了些代码作为参考,发觉很多前台开发人员在编码的时候根本没考虑最终部署环境。

以验证码为例:

1. 不要把生成的随机验证码存储到 Session 里面。第一,我们并不能保证在负载均衡环境下,每次请求都会被路由到同一台机器上;第二,现在很多 IIS 都会启用 "Web 园",也就是说在一台机器上启用多个进程来并发处理用户请求,而 Session 默认情况下是无法跨进程共享的。这些问题都可能导致用户明明输入一个正确的验证码,却无法进行提交操作。虽然在 MSDN 上建议大家将 Session 信息写入 SqlServer,个人觉得还是部署一个 memcached 要好些,性能会好很多。

2. 使用 Cookie 保存验证码。首先,一定要注意将验证码数据进行加密,否则验证码就是一摆设 (相信很多写过蜘蛛抓取程序的人都会分析是否能直接从 Cookie 获取相应的数据); 第二,不要滥用 Cookie,默认情况下,每个域在同一个客户端只能存储 20 个 Cookie,如果我们不注意分配使用,可能造成某些更重要的信息被删除,造成其他业务流程失败。

3. 很多用户习惯使用 FireFox、Maxthon 等多页面浏览器一次打开多个页面,而如果验证码采用同一个 name 的话,那么只有最后一个页面的验证码有效。等用户输入验证码进行提交操作时,就会频繁出现 "验证码错误"。我想这不但让用户觉得痛苦,对网站的好感也会大幅度降低。我在某网站下载电子图书的时候,就遇到这个问题,所有验证码必须重新刷新一次。解决办法可以是在某个 input.focus 时才显示验证码,从而确保其有效性。

当然,对于这些,我只是个末学后进和外行。不过还是建议大家在编码的时候多多考虑实际部署环境。

转自雨痕大牛的博客:Session & Cookie 的使用建议

posted @ 2009-04-16 07:28  stu_acer  阅读(...)  评论(...编辑  收藏