惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
博客园 - Franky
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
B
Blog RSS Feed
雷峰网
雷峰网
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
美团技术团队
云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
G
Google Developers Blog
T
Tailwind CSS Blog
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
月光博客
月光博客
Engineering at Meta
Engineering at Meta

博客园 - stu_acer

对C#对象的Shallow、Deep Cloning认识【转】 PowerShell 启动应用程序【转】 把boolean 参数放到最后面(Put boolean arguments last)【转载】 几个收藏的根据数据库生成Insert语句的存储过程[修正版] SQL Server删除外键约束 IE6下PNG图片透明显示解决方法(From QQ) 用Regex类计算一个字符串出现次数是最好方法【转载】 C#有关Session 操作的几个误区【转】 - stu_acer - 博客园 DataList绑定数据到泛型类(Dictionary) 【转】 重写Asp.NET2.0 TreeView的折叠/展开方法(TreeView_ToggleNode) javascript window.close() 去掉那讨厌的确认对话框【转】 thickbox使用技巧【转】 - stu_acer - 博客园 jQuery操作checkbox的例子(全选,反选,获取选取值)【转】 查看SQL Server 2005版本号 创建SQL索引,查看SQL性能语句收集 ddlevelsmenu在IE6下,与select冲突的解决办法【整理】 IE6 Select元素无法被div等元素覆盖的bug解决办法【zz】 利用Attribute和反射从模板生成短信 - stu_acer - 博客园 AdventureWorks、Northwind、pubs示例数据库下载
Session & Cookie 的使用建议(zz) - stu_acer
stu_acer · 2009-04-16 · via 博客园 - stu_acer

最近开始折腾 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 的使用建议