java web系统防越权,就是可以直接在地址栏输入打开没有授权的页面。或者一个网站的所有链接如何爬取,并保存跳转的关系
大家好,我说一下问题和我的想法。 这是运行5年的系统了,只兼容IE,几乎不能通过重构来实现,所以写个过滤器filter应该是最简单的方案。 因为数据库只描了菜单界面(通过菜单打开的界面)的权限,所以可以直接判断。剩余的权限界面(通过按钮打开的界面)没有描权限,所以现在资源只能解决一部分问题。 我开始想各种办法来实现剩下的,最开始想的是判断referer,如果没有就是通过地址栏打开的,但是测试一下发现js的函数window.open打开的界面都没有referer,这个方案不行。 我想的另一个方案就是把整个系统爬一遍,找到权限界面对应的菜单界面进行权限判断。 所以我想问的有三点 1.这种爬虫怎么写,因为系统中的跳转都是通过按钮实现的不是通过链接,我没有接触过爬虫的编写(只干过用httpclient下载百度所有的首页图片),网上也没有找到很合适的。 2.有什么更好的方法来实现这种防越权吗? 3.有什么方便的办法让所有通过按钮的请求都带referer也行
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我们也有权限表,只是菜单界面的,剩下7300个权限界面(通过按钮打开的界面)没有权限,手动干工作量有点大啊,所以我想用爬虫,自动化的从头跑一遍,找到权限界面对应的菜单界面,有了这个对应关系,就能通过菜单界面的权限进行判断
或者有更好的办法进行判断
引用来自“吹尽狂沙”的评论
我是java web初学者,不知道方法是否合适。我用过设置session的方法,把用户名通过session在页面之间传递并检测,如果检测不到用户名就跳转到登录页面
系统已经运行了5年,光菜单界面就有2703个,所有的JSP页面将近1万个,所以
对啊, filter能满足啊。
当然也不是所有地址都需要拦截吧, 就算所有的都需要拦截,也没多少吧。
如果原有权限(菜单权限)和地址有某种关系就更好了。
用一个全局缓存字典存需要验证的权限和用户的权限对比就好了。
谢谢你的回答,登录校验我们已经实现了,现在是更复杂的权限校验,现在如果用户已经登录了,只要输入地址就能打开没有授权的界面,例如分公司的人能打开总公司才能打开的界面
我是java web初学者,不知道方法是否合适。我用过设置session的方法,把用户名通过session在页面之间传递并检测,如果检测不到用户名就跳转到登录页面