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

推荐订阅源

Last Week in AI
Last Week in AI
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
量子位
aimingoo的专栏
aimingoo的专栏
D
Docker
F
Fortinet All Blogs
T
Tailwind CSS Blog
V
V2EX
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
G
Google Developers Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
A
About on SuperTechFans
IT之家
IT之家

博客园 - 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 的使用建议