瑞雪年

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::
最近在看一个web项目,发现一个很容易被忽视的问题,那就是“表单重复提交”,在一般页面会产生重复数据,可能影响不大,可是要是发生在登录面页,就是一个重大的安全漏洞,因为当你注销了系统,在后台代码里也清空了Session,但如果第一用户没有关闭浏览器,这样又来了个第二用户,那么他就很容易在不需要知道第一用户的用户名、密码的情况下,以第一用户的身份登录;他只需要使用浏览器的“Back”,后退到第一用户的登录页面,然后刷新,并选择“重试提交”,这样他就进入了系统。
其实这样的问题是很容易避免的,只是很多人没有注意到而已,在网上很Struts登录的例子中都存在这样的问题。
要避免它也很容易,只要在页面初始化时,给它注入一个Token,并页面提交时验证Token是否被提交过这可以了。
并且在Struts中好像还有现成的<Token>和Token验证可以使用,在ASP.NET中,使用一个Hidden的Input也很容易实现。
posted on 2009-03-24 10:10  瑞雪年  阅读(326)  评论(0编辑  收藏  举报