怎么让servlet只能project内访问?

ooo_ooooops 2018-01-22 09:26:03
某些servlet不想被外部随便访问:
1. 有没有很简单标准的处理方法?
2. 如果没有,要自己过滤,应该过滤什么比较标准?
...全文
758 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-03-06
  • 打赏
  • 举报
回复
引用 8 楼 trocp 的回复:
[quote=引用 7 楼 ooo_ooooops 的回复:] [quote=引用 6 楼 maradona1984 的回复:] 你还是说下你的原始需求吧,我感觉你仅仅是需要一个权限系统,但你描述起来却是另外一回事了
ajax更新数据库,通过ajax的servlet的映射地址,但是这个映射地址谁都可以访问,我就像知道怎么把project外的访问拒绝掉,像web-inf那种结果。 不知道讲清楚没有,提前谢谢。[/quote] WEB-INF不能被外部访问,是因为这个目录是不发布为HTTP资源的,这是由Java窗口(例如Tomcat)实现的。 你的需求与WEB-INF还是有本质区别的,首先WEB-INF不会被发布为HTTP资源(也就是说不管怎样浏览器无法访问,只能本地程序读写); 而你要求的servlet,首先他肯定是一个HTTP资源,必定能被外部(例如浏览器)访问,而你的需求是能在指定的场景下访问,这即表明这是一个受限的资源,即需要作权限控制。 根据你的描述,最简单的方法是设置Filter,当过滤到访问特定servlet时,通过Header查看请求当前servlet前的页面 String retUrl = request.getHeader("Referer"); 但这个并不可靠,Referer是可以伪造。 相对可靠一点的办法是,用Session判断并记录是否具访问指定servlet的权限[/quote] Thx a lot. 我原先就是想着靠referer, 然后感觉referer可以伪造,所以才想问问通常处理这个问题的标准方式。大概明白了,谢谢解答疑惑。
maradona1984 2018-02-27
  • 打赏
  • 举报
回复
引用 7 楼 ooo_ooooops 的回复:
[quote=引用 6 楼 maradona1984 的回复:] 你还是说下你的原始需求吧,我感觉你仅仅是需要一个权限系统,但你描述起来却是另外一回事了
ajax更新数据库,通过ajax的servlet的映射地址,但是这个映射地址谁都可以访问,我就像知道怎么把project外的访问拒绝掉,像web-inf那种结果。 不知道讲清楚没有,提前谢谢。[/quote] 那你有什么可以识别哪些非法请求的标识么?你所谓的project外的访问,是非常不专业的说法,反正我只能猜测你想表达的意思,但不确定,不知道我这么讲你是否明白自己的问题在哪
zxh198841 2018-02-27
  • 打赏
  • 举报
回复
设置过滤器,过滤一下就可以
oO临时工Oo 2018-02-27
  • 打赏
  • 举报
回复
引用 7 楼 ooo_ooooops 的回复:
[quote=引用 6 楼 maradona1984 的回复:] 你还是说下你的原始需求吧,我感觉你仅仅是需要一个权限系统,但你描述起来却是另外一回事了
ajax更新数据库,通过ajax的servlet的映射地址,但是这个映射地址谁都可以访问,我就像知道怎么把project外的访问拒绝掉,像web-inf那种结果。 不知道讲清楚没有,提前谢谢。[/quote] WEB-INF不能被外部访问,是因为这个目录是不发布为HTTP资源的,这是由Java窗口(例如Tomcat)实现的。 你的需求与WEB-INF还是有本质区别的,首先WEB-INF不会被发布为HTTP资源(也就是说不管怎样浏览器无法访问,只能本地程序读写); 而你要求的servlet,首先他肯定是一个HTTP资源,必定能被外部(例如浏览器)访问,而你的需求是能在指定的场景下访问,这即表明这是一个受限的资源,即需要作权限控制。 根据你的描述,最简单的方法是设置Filter,当过滤到访问特定servlet时,通过Header查看请求当前servlet前的页面 String retUrl = request.getHeader("Referer"); 但这个并不可靠,Referer是可以伪造。 相对可靠一点的办法是,用Session判断并记录是否具访问指定servlet的权限
「已注销」 2018-02-27
  • 打赏
  • 举报
回复
引用 6 楼 maradona1984 的回复:
你还是说下你的原始需求吧,我感觉你仅仅是需要一个权限系统,但你描述起来却是另外一回事了
ajax更新数据库,通过ajax的servlet的映射地址,但是这个映射地址谁都可以访问,我就像知道怎么把project外的访问拒绝掉,像web-inf那种结果。 不知道讲清楚没有,提前谢谢。
maradona1984 2018-01-24
  • 打赏
  • 举报
回复
你还是说下你的原始需求吧,我感觉你仅仅是需要一个权限系统,但你描述起来却是另外一回事了
ZHOU西口 2018-01-24
  • 打赏
  • 举报
回复
header是指? serlvet的访问路径可以拿到吧,直接给它的uri或者相对路径就可以了吧
「已注销」 2018-01-24
  • 打赏
  • 举报
回复
引用 3 楼 splendid_java 的回复:
[quote=引用 2 楼 ooo_ooooops 的回复:] [quote=引用 1 楼 splendid_java 的回复:] 简单的过滤器就可以吧。 1、比如通用一些,拦截servlet对应的uri; 2、针对性强一点,直接把servlet完整url给交给过滤器。
从header里面判断么?[/quote] 看看这个:http://blog.csdn.net/kyunchen/article/details/52187514[/quote] 谢谢,filter我知道怎么用,我意思是,我拦截的时候要获得源url,这个源url是从header里面来还是从哪里来?
ZHOU西口 2018-01-24
  • 打赏
  • 举报
回复
引用 2 楼 ooo_ooooops 的回复:
[quote=引用 1 楼 splendid_java 的回复:] 简单的过滤器就可以吧。 1、比如通用一些,拦截servlet对应的uri; 2、针对性强一点,直接把servlet完整url给交给过滤器。
从header里面判断么?[/quote] 看看这个:http://blog.csdn.net/kyunchen/article/details/52187514
「已注销」 2018-01-24
  • 打赏
  • 举报
回复
引用 1 楼 splendid_java 的回复:
简单的过滤器就可以吧。 1、比如通用一些,拦截servlet对应的uri; 2、针对性强一点,直接把servlet完整url给交给过滤器。
从header里面判断么?
ZHOU西口 2018-01-22
  • 打赏
  • 举报
回复
简单的过滤器就可以吧。 1、比如通用一些,拦截servlet对应的uri; 2、针对性强一点,直接把servlet完整url给交给过滤器。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧