1 我用fiddler截取了JAVAEYE登陆的HTTP请求消息
[quote]authenticity_token=sAEZZHPXYzs3L0u4cuBUG8C9tcyrW41UnLjV4nbcaxs%3D&name=liguocai2009&password=明文密码&button=%E7%99%BB%E3%80%80%E5%BD%95[/quote]
关键的问题:authenticity_token有什么用?怎么来的?
有user和明文密码不就足够了吗?如果authenticity_token包含IP的摘要,但是实际上即使我换一台机也没有什么事情发生。
2 我最近在研究登陆。
顺便问下,为什么QQ可以实现,登陆了一个QQ之后,qzone,qq游戏等应用为什么可以检测到已经登陆了?应该不是传统上的服务器单点登陆。。。
关于token,牛人已经讲解的太多了
你自己可以谷歌
我找到这些资料只看了谷歌搜索简介,公司网络太慢了,几分钟过去还没有刷开一个
http://wenku.baidu.com/view/b92a5ee1524de518964b7df6.html
http://www.cnblogs.com/yixianbin/articles/1440397.html
http://book.51cto.com/art/201204/330082.htm
未使用基于ssl的https协议,那么登录都是这样一个普通的post请求,你所担心的问题在哪里?
打开并登录qq,假设号码为123456. 打开浏览器输入 123456.qzone.qq.com,是未登录状态,不存在自动登录的现象。 qq游戏和qq,2个都是本地安装的软件,这2者之间怎么通讯,还真不清楚。 这个属于本地安装软件开发的范畴了。
如果是从qq上点qzone打开网页,那么在url中带个参数,参数是ticket,或者叫什么key的,一个唯一字符串的标识就行了。 (自己想的,未研究过qq是怎么实现的)。
比如qq登录时,通过网络和服务器验证用户名/密码。 验证通过后,服务端生成一个很长的字符串做为ticket。 从qq上打开qzone页面时, 带着这个ticket, 服务器端验票就行了。 (以上都是个人猜测,未验证过)
rails自带的,防止跨站攻击用的
http://baike.baidu.com/view/1609487.htm
fiddler是个什么工具我不知道。
但是即便使用了https, 那么在本地浏览器上使用httpfox,firebug等开发人员工具,还是可以查看到post出去的参数的名称和值。
这里看到的明文,不代表是用明文在网络上传输。
此外, javaeye这样的网站,不用ssl也没问题。 大部分网站不都是普通的http post请求么,没有什么不一样的地方。
和struts token一样的原理,每次表单请求都生成一随机数并存到session
CSRF攻击原理: http://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf
jsessionid的名字一般是可能修改java应用服务器,因为一般JAVA的session是由应用服务器管理.而不像ruby应用,session一般是由框架管理.
http://www.oschina.net/question/12_9478
关于自动登陆,这个sessionid其实就是一个cookie值而已.自动登陆的实现你可以随便搜一下.
安全问题,其它的网站是拿不到你的cookie的,这个不用担心.至于网络监听,那就别在公共网络使用.
银行级别的也许会验证sessionid的ip,你换个ip也许就要重新登陆了.
第一个网址安全方面介绍了很多,都可以看看