2008-07-04
关于dwr的安全性问题
关键字: dwr, 安全
在一些网站中,我们虽然使用了AJAX,但是我们并不希望用户能够私自调用这些AJAX,因为有些AJAX调用会包含对数据的更新操作,即使是只读的操作,也不希望用户能在本地进行直接调用。
在 Michael Chen 的这篇文章中 http://michael.nona.name/archives/142 ,提及了ajax应用中的安全问题,并且给出了一个临时的解决方案。虽然我用的不是 Buffalo ,而是 dwr,但是这篇文章对于 dwr 仍然有帮助。
不过正如 Michael Chen 在文章中所说,他给出的解决方案没有经过详细的测试,所以我在用了一段时间之后,还真就发现了问题。
文中的解决方案的关键是判断 request的Cookie,虽然 dwr 中取得request的方式与 Buffalo不同,但是并不影响,而且经过测试,也确实有效。
可是之后网站增加了静态页面的生成功能,这样用户就可以直接访问静态页,而非提交一个请求。结果问题出现了。
当在静态页中调用 dwr 的应用时,request的 Cookie 也是空的。这样之前的解决方案就无效了。
那么怎么办?或许 http 的 header 中的 referer 能给点帮助!
通过这样的方式我们就能得到一个 referer,那么这个 referer是什么呢?就是请求这个AJAX的地址。我想熟悉盗链功能的朋友对它不会陌生。
这样,当我们从 www.xxx.com 请求 www.xxx.com/index.html 时,而这个 index.html 中又包含一个 AJAX 的调用的时候,我们就可以这么判断:
这样就可以保证只允许网站内部的资源访问 AJAX 的应用了。
经过测试,可以做到避免使用浏览器的方式从本地私自访问AJAX应用。但是我想这种方式仍然会存在漏洞,希望大家能给出更好的方案。
在 Michael Chen 的这篇文章中 http://michael.nona.name/archives/142 ,提及了ajax应用中的安全问题,并且给出了一个临时的解决方案。虽然我用的不是 Buffalo ,而是 dwr,但是这篇文章对于 dwr 仍然有帮助。
不过正如 Michael Chen 在文章中所说,他给出的解决方案没有经过详细的测试,所以我在用了一段时间之后,还真就发现了问题。
文中的解决方案的关键是判断 request的Cookie,虽然 dwr 中取得request的方式与 Buffalo不同,但是并不影响,而且经过测试,也确实有效。
可是之后网站增加了静态页面的生成功能,这样用户就可以直接访问静态页,而非提交一个请求。结果问题出现了。
当在静态页中调用 dwr 的应用时,request的 Cookie 也是空的。这样之前的解决方案就无效了。
那么怎么办?或许 http 的 header 中的 referer 能给点帮助!
String referer = request.getHeader("referer");
通过这样的方式我们就能得到一个 referer,那么这个 referer是什么呢?就是请求这个AJAX的地址。我想熟悉盗链功能的朋友对它不会陌生。
这样,当我们从 www.xxx.com 请求 www.xxx.com/index.html 时,而这个 index.html 中又包含一个 AJAX 的调用的时候,我们就可以这么判断:
String referer = request.getHeader("referer");
if(!referer.startsWith("http://www.xxx.com")) {
throw new Exception();
}
这样就可以保证只允许网站内部的资源访问 AJAX 的应用了。
经过测试,可以做到避免使用浏览器的方式从本地私自访问AJAX应用。但是我想这种方式仍然会存在漏洞,希望大家能给出更好的方案。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 144949 次

- 详细资料
搜索本博客
我的相册
tdd
共 3 张
共 3 张
最新评论
-
网站的静态页面生成方案
笑 喘 写道yananay 写道 把对 index.do 请求后的结果保存成一个 ...
-- by tianmo2008 -
网站的静态页面生成方案
我曾经尝试过在ASP.NET中做这样的事情,用某户访问某个页面时,先从配置里读取 ...
-- by 活靶子 -
网站的静态页面生成方案
对于CMS静态发布,我用的是用Veocity模板去 生产的,根据一定的业务逻辑去 ...
-- by pablo3518 -
聊聊大连新的残疾人制度
政府张口要钱,什么理由已经不重要了。。。
-- by issppt -
请先不要讨论细节好吗
[quote="ayis"][quote="kimmking"][quote=" ...
-- by gzstyxb






评论排行榜