这不完全是你看到的样子——当你选择了“记住我”,又在会话过期以后返回,你将得到这个: |
我没有混淆用户名,上面显示的带有星号的用户名是存在于cookie中的,这个cookie会连同一些其他的必须被用来标识用户的数据一起,保留3个月。坦率地说,在这里面我没有觉得有很多的意义,记住你的用户名并不总会成为问题! 但也不是说就一定是非此即彼,你会有中间的选择。例如,我早些时候发表的观点,如果会话由“记住我”功能继续下去,就需要在关键过程执行之前再认证。这似乎有点两全其美。 |
在某些方面下,这个特性是一个非常好的主意。它可以非常简单的去实现大部分你需要的功能。坦率地说,当你去增加cookie的生命周期的时候,你仍然有一些困惑前面的两个例子是怎么错的。
通过这篇文章,另外一个关键的地方是理解"记住我"特性的安全机制,例如一个多层次,相互交互的系统。你可能能够摆脱在cookies里面加入证书,但是结合ELMAH情况或者缺少HTTPOnly属性和XSS缺陷是非常愚蠢的,将会是一个严重的风险。那么"纵深防御"是怎么一回事呢!
英文原文:How to build (and how not to build) a secure “remember me” feature
参与翻译(7人):skyim, super0555, lwei, maverickpuss, 几点人, SpaikeShen, Garfielt