求解JFinal对URL的访问处理和Session、Cookie的安全问题

华兹格 发布于 2012/10/19 09:29
阅读 3K+
收藏 2

首先先感谢下@jfinal的热忱帮助和建议,昨晚拜读JFinal中的Controller源码,发现Controller是对Servlet的封装,将Servlet里的常用方法进行了有效封装,极大的方便了开发人员的开发效率,赞个!

经过学习和运用,在获得提高的同时,也遇到了一些问题,在此请教一些!

1.JFinal对URL的访问处理

在Controller里的方法中,其中pubic void xxx(){...} 类型的方法是可以供Client访问的,但需要在路由中注册一个ControllerKEY(这个ControllerKey可以作为这个Controller的别名吧),但那些没有注册的 pubic void xxx(){...} 方法是如何访问、调用的呢?

2.顺便再问个JFinal里对Session和Cookie的使用问题!

在互联网中,从Server的角度来说,Client都是不信任的,Server需要验证客户端是否真实合法,可能我们常会用Session、Cookie来验证,但是道高一尺魔高一丈,近年来随着黑客技术的提高,Session、Cookie并不是绝对安全的,常会出现Cookie被劫持或通过Cookie盗取用信息的问题,所以对Session和Cookie需要进行特殊处理。请问在JFinal对Servlet封装的方法里,支持的是对其原始处理,那我们编程人员是不是前期需要进行加密等操作?。。。感觉这个问题就不是问题了。。。汗~~~

请问JFinal在WEB安全问题上最佳实践是什么?



加载中
1
27号
27号

1.如果没找到,交给容器默认处理。如下:JFinalFilter 

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)res;
		request.setCharacterEncoding(encoding);
		
		String target = request.getServletPath();
		boolean[] isHandled = {false};
		try {
			handler.handle(target, request, response, isHandled);
		}
		catch (Exception e) {
			if (log.isErrorEnabled()) {
				String qs = request.getQueryString();
				log.error(qs == null ? target : target + "?" + qs, e);
			}
		}
		
		if (isHandled[0] == false)
			chain.doFilter(request, response);
	}

27号
27号
回复 @hanzhankang : :-)
华兹格
华兹格
好热心呀,我看 ActionMapping 源码!
1
27号
27号
2.需要自己 编写jfinal扩展,处理。
1
27号
27号
最佳实践需要你的贡献~
1
無雙
無雙

第一个问题

add一个ControllerKEY  "hello",HelloController.class 你去访问如 http://localhost:8080/hello  实际是访问http://localhost:8080/hello/index

其它方法的访问  http://localhost:8080/hello/methodName


第二个问题,他没做安全处理,肯定就要自己做了呗。

1
lateron
lateron
如果没有找到JFinal不会处理,核心逻辑都在入口filter中。
0
JFinal
JFinal

   谢谢楼主提出这么好的问题 

1.JFinal对URL的访问处理

    若某个 Controller 没有被注册到路由中去,则这个Controller中的任何方法都是不能够被访问到的。Controller中的方法必须要是 public void methodName()这类不带形参的public方法(返回值可以不是void)。那么意味着:只有明确开放的服务或功能才能被访问。这样就保障了系统基本的安全。

2.顺便再问个JFinal里对Session和Cookie的使用问题!

    这个问题暂时留给广大的开发者自由发挥的空间了,未来考虑做到 @JFinal 扩展中去。JFinal示来的目标之一就是在内核不变的情况下,仅仅利用扩展机制将其打造成为一个极度全面的Web + ORM 框架,类似于现在的 ruby on rails 或 jquery。

3.请问JFinal在WEB安全问题上最佳实践是什么

    JFinal 提供了全面的扩展机制,给予开发者以尽可能大的发挥空间,一般可以通过使用 Handler、Interceptor来进行安全性保障。相信最佳实践不久就会出现。另外 JFinal 即将发起一个开源项目,希望能成为最佳实践 :)

华兹格
华兹格
谢谢关注哈!
27号
27号
期待能参与参与。哈哈~
0
缪斯的情人
缪斯的情人
对于client访问url形式安全验证的问题已经不是什么新鲜技术了,当前很多类似处理方案,典型的基于api访问的第三方准入认证的:OAuth2,OpenId
华兹格
华兹格
谢谢,OAuthor这个需要考虑,现在网络不再是封闭式的了,需要开发,需要互相交流用户!
0
一枚假程序猿
一枚假程序猿
setCookie 和 getCookie 存不进去值也获取不到值
华兹格
华兹格
是中文吗?中文需要编码。 cookie时间设置长一点
返回顶部
顶部