请问大家在java企业应用中功能url伪造如何防范的?

11-03-02 openeyes
         

比如在一个图书管理的应用中,我们原来只用了一个Filter来查看该用户是否登录,登录的话显示主界面,点击菜单做相应的功能。

那么有个普通用户只有图书查询的功能,但是如果他知道用户管理的url,就能在浏览器里直接输入url进入用户管理从而取得管理员权限。

为了弥补这个漏洞,我们又加了一个Filter,通过正则表达式验证该用户是否有权限执行该url,有继续,否则提示没有权限。对于那些页面上的按钮也这样处理。

由于管理员配置的是功能权限,往往一个功能会对应多个url(例如“新增图书”这个功能会对应进入图书信息输入页面的url和保存输好的图书信息的url),用Filter过滤由于要用servlet中的url匹配系统中配置好的多个正则表达式,效果比较差。

另外,对于页面上有些不需要权限的按钮处理起来也比较麻烦,因为需要对这个按钮对应的url需要配置一个正则表达式,只要匹配这个表达式可以无条件执行。

暂时只能想到这种方法来应对,感觉相当复杂,不知道有没有更好的方法,有大侠愿意讨论一下么?

[该贴被openeyes于2011-03-02 16:05修改过]

         

2
banq
2011-03-03 09:07

必须使用专门的安全机制,URL授权和组件服务访问授权以及模型授权三级权限。

URL授权可以使用基于容器的配置,具体参见:http://www.jdon.com/jivejdon/thread/38522

也可以使用Acegi或Oauth等开源框架,比较复杂,但是灵活。