我知道当cookie从服务器发送到浏览器并使用服务器语言设置时,它通过http或ssl或https发生.那么javascript cookie去哪里,一旦脚本:"document.cookie =",在浏览器中执行,以及通过哪个协议/传输方案?
浏览器只是在其"cookie jar"中发送所有未到期的HTTP cookie(不是SSL相关!),它与传出的HTTP请求的域(可能是路径)匹配:一旦在"cookie jar"中,cookie将自动发送给所有人未来的要求.通过Set-Cookie
标头从服务器发送的Cookie会自动添加到"cookie jar"中,但如上所述,Cookie也可以从JavaScript*中添加.在这两种情况下,客户端/浏览器都通过标头将cookie发送回服务器Cookie
.
这就是为什么像所有用户输入一样,应谨慎对待cookie,并且必须在每次"安全敏感"操作请求上进行备份/验证.一般一个会话cookie被用于通过作为提供这种保护形式一的随机数,因为它们是(或者应该是)那些从来不重复使用,是不可能预测大密码声随机数.
然后,会话cookie/nonce只是查找包含状态的持久存储(通常是数据库),例如"用户ID".它是分离和随机特性的组合,它们阻止客户根据cookie的价值选择自己的"用户ID",但......
..."安全性"是一个复杂的主题,会话cookie 不能防止所有恶意JavaScript,例如使用CSRF或类似的JavaScript ,并且它们不提供针对中间人攻击或窃听的帮助,并且仅在其到期时间内有效对抗重放攻击.验证cookie的另一种(通常被忽视的)方法是使用防篡改验证哈希,例如ASP.NET对视图状态的处理.
盲目使用/信任LoggedInUserId
或IsAdministrator
cookie的服务器程序确实设计得非常不安全!:)
快乐的编码.
*所有最新的浏览器都支持HTTPOnly cookie,但JavaScript无法读取/覆盖:但是,它们仍可被其他程序欺骗!(有些浏览器最近才获得支持:例如Chrome 12,iOS4,Safari 5.)