我正在使用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/