快速业务通道

Rails安全导读【一】 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
了他的cookie并且覆盖了当前的cookie。

5.这个用户有了他的credit, 就可以进行重放攻击了。

在session里加一个(nonce)暂时标志(随机值)可以解决重放攻击这个问题。一个nonce仅有效一次,并且服务端保持对所有有效nonce的 跟踪,如果你有多个应用服务器,它可能甚至会更复杂,避免把nonce存储在数据库里,这样会破坏整个CookieStore。

最好的解决方法是不要存放这种数据在session里,而是在数据库里。这个例子,存储credit在数据库里,logged in user id 放在session 里。

Rails安全导读【一】(3)

时间:2011-07-18 51cto博客 blackanger译

2.7 session 定制攻击

- 除了窃取用户的session id,攻击者还可能去定制一个session id来伪装,这就是所谓的session定制。

这个攻击的重点是定制一个用户的可以识别他的session id,并且强制用户的浏览器用这个id。因此后来攻击者也不需要去窃取一个 session id了。来看看攻击是如何展开的:

1.攻击者创建一个有效的session id: 他登陆想定制session的那个web应用的登陆页面,这时就通过response在cookie里有一个session id了(图中的1,2)

2.他可能保持这次会话(session)。session是会过期的,比如每隔20分钟,这会大大的减少了攻击者的时间。因此,他会不断的访问这个 web应用以便于保持session可用。

3.现在,攻击者会强迫用户来使用这个session id(看图里的3),因为你不能改变另一个域的cookie,攻击者不得不在目标web应用里运行 一个javascript脚本。通过往目标web应用注入javascript代码来完成这次攻击。下面是一个例子:

<script> document.cookie="_session_id=16d5b78abb28e3d6206b60f22a03c8d9"; </script>

4. 攻击者引诱受害人向被感染的网页上的JavaScript代码。通过查看网页时,受害者的浏览器将把session id改变成攻击者定制好的 session id。

5.因为这个陷进session id没有被用,web应用会需要用户去验证。

6.从现在开始,受害者和攻击者都会共有一个相同的session在这个web应用里。此时受害者并没有注意到这次攻击。

2.8 session 定制 --- 对策

- 一行代码就保护你不被session定制侵害。

(我的这篇文章也写了一些对策:http://blackanger.blog.51cto.com/140924/91764)

最有效的对策就是在成功登陆以后,创建一个新的session id,并且宣告旧的session id失效。那样,攻击者就不能用固定的session id了 。这是一个对方session劫持的好的对策。Rails里我们可以这样来产生一个新的session:

reset_session

如果你用流行的rails插件,RestfulAuthentication,请在SessionsController#create action里加 reset_session. 注意,这个行为消 除了原session里存储的所有值,你必须把这些值得转移到新的session里。

另一个有效的对策是,在session里保存用户的特定属性,在每次请求进来的时候验证他们,如果信息不匹配,则拒绝访问。可以用远程ip 地址,或者是访问浏览器名称,尽管后者是不常用的。当保持ip的时候要注意,应该保持用户真实ip,而不是互联网服务供应商或大型组织的ip ,如果这些变化以后,某些用户可能无法使用这个web应用,或者会有限制。

2.9 session 过期

- 永不过期的session会更加方便这些session攻击。

session过期时间在服务端设置更加安全。下面是一个例子, 如何在数据库里设置session的过期时间。如果超过20分钟就调用 Session.swap(20m):

class Session < ActiveRecord::Base def self.sweep(time_ago = nil)      time = case time_ago        when /^(\d+)m$/ then Time.now - $1.to_i.minute        when /^(\d+)h$/ then Time.now - $1.to_i.hour        when /^

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号