从URL栏限制访问DWR(Easy Ajax for Java)

时间:2015-03-10 13:26:31

标签: java ajax dwr

我正在使用DWR,这通常被称为 Easy Ajax for Java

但它可以通过URL bar直接访问,如此

http://localhost:8080/myProjectName/dwr/

从这里我可以执行每个Ajax Call,这被视为对应用程序安全的威胁,

有没有办法限制这个?

1 个答案:

答案 0 :(得分:1)

我不确定你想要完成什么,但这里有一些建议:

web.xml中的servlet声明中。将param-value设置为false,http://localhost:8080/myProjectName/dwr/将返回404(找不到页面)。

  • 即使禁用调试模式,仍然可以运行您的功能。这就是为什么您可以在drw.xml中限制Web上可以使用哪些类和哪些函数的原因。有关dwr.xml的详细信息,请查看DWR documentation

  • 请记住,公开可用的每个功能都应检查是否允许用户运行它。我通常会创建一个这样的函数:

    private void getLoggedInUser(){
        WebContext ctx = WebContextFactory.get();
        HttpSession session=ctx.getSession();
        if(session.getAttribute("loggedIn")!=null && (Boolean)session.getAttribute("loggedIn")==true){
            if(session.getAttribute("user")!=null){
                try{
                    return (Person)session.getAttribute("user");
                }catch (ClassCastException ex){
                    return null;
                }
            }else{
                return null;
            }
        }else{
            return null;
        }
    }
    

然后在通过网络提供的每个功能的开头,我做了类似

的事情
    Person user=getLoggedInUser();
    if(user)==null return null;
  • 请务必记住,您网站的访问者可以操纵javascript。如果通过dwr发布函数,则假设任何人都可以调用它。我不能强调这一点:在通过dwr发布的每个函数中,首先确保允许用户运行它,然后检查用户可能已经传递的任何参数是否有效。

  • 更新:还可以使用filters限制对功能的访问。