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

但是可以像这样直接通过URL bar访问

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


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

有没有办法限制这一点?

最佳答案

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


http://localhost:8080/myProjectName/dwr/仅在已设置的情况下可用

<init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
</init-param>



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限制对功能的访问。

关于java - 限制从URL栏访问DWR(Easy Ajax for Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28964969/

10-12 03:07