首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

防止用户在地址栏瞎敲解决方案

2012-01-22 
防止用户在地址栏瞎敲现在有个web工程, 目录下有web/admin/video 三等目录防止用户在地址栏敲入http://loc

防止用户在地址栏瞎敲
现在有个web工程, 目录下有web/admin/video 三等目录
 
 防止用户在地址栏敲入http://localhost:8080/web/admin 看到所有admin目录下的所有jsp页面

 请问怎么办好?

[解决办法]
在项目web.xml中配置欢迎列表
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>

在 程序的页面中

String type = (String)session.getAttribute("suType");

if(type==null){
response.sendRedirect("/netcom/login.jsp");
}


这个方法有点古老的。
[解决办法]
admin里面的内容都是固定的用户才能访问的
你可以先设置session,如果有用户登陆,就把用户信息录入到session中
如果没有用户登陆,那session就为空。
然后再判断session的值,如果是管理员账户信息,则允许进入admin目录,如果session为空或者用户信息不为管理员信息,则强制跳转到一个自定义的错误页面
[解决办法]
给你贴代码,你自己看吧,建议看看filter的东西

Java code
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LogonFilter implements Filter {    private static final String LOGON_URI = "LOGON_URI";    private static final String HOME_URI = "HOME_URI";    private String logon_page;    private String home_page;    public void destroy() {        // TODO Auto-generated method stub    }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        // TODO Auto-generated method stub        HttpServletRequest httpReq = (HttpServletRequest) request;        HttpServletResponse httpResp = (HttpServletResponse) response;        httpResp.setContentType("text/html");        httpResp.setCharacterEncoding("utf-8");        HttpSession session = httpReq.getSession();        PrintWriter out = httpResp.getWriter();        // 得到用户请求的URI        String request_uri = httpReq.getRequestURI();        // 得到web应用程序的上下文路径        String ctxPath = httpReq.getContextPath();        // 去除上下文路径,得到剩余部分的路径        String uri = request_uri.substring(ctxPath.length());        // 判断用户访问的是否是登录页面        if (uri.equals(logon_page) || uri.equals(home_page)) {            chain.doFilter(request, response);            return;        } else {            // 如果访问的不是登录页面,则判断用户是否已经登录            if (session.getAttribute("user") != "" && session.getAttribute("user") != null) {                chain.doFilter(request, response);                return;            } else {                out.println("<script language=\"javaScript\">"                                + "parent.location.href='"+ctxPath+logon_page+"'"                                 + "</script>");                //httpReq.getRequestDispatcher(logon_page).forward(httpReq,httpResp);                return;            }        }    }    public void init(FilterConfig config) throws ServletException {        // TODO Auto-generated method stub        // 从部署描述符中获取登录页面和首页的URI        logon_page = config.getInitParameter(LOGON_URI);        home_page = config.getInitParameter(HOME_URI);        // System.out.println(logon_page);        if (null == logon_page || null == home_page) {            throw new ServletException("没有找到登录页面或主页");        }    }}
[解决办法]
啥跟啥啊! tomcat 自己有配置防范这个
请教大大们,怎样防止TomCat暴露服务器路径? 文件列表


[解决办法]
楼主,可以有过滤器。。。。


拦截器是strust2里的spring拦截器不起作用 拦截不了页面的东西。strust2拦截器只能拦截参数和请求!

filter 拦截所用页面。。。
第一步:做权限验证。
第二步:可以有Filter把所用文件全部过滤掉在客户请求判断该URL是否违法。。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest hreq = (HttpServletRequest) request;

HttpServletResponse hres = (HttpServletResponse) response;

HttpSession session = hreq.getSession(true);
System.out.println(hreq.getRequestURL());



 String sh=hreq.getRequestURL().toString();
String s0="Login.jsp";
if(sh.lastIndexOf(s0)==sh.length()-s0.length())
{ chain.doFilter(request, response);
return;
}
参考 你只需要修改代码就可以啦!!
我测试过没问题。。。。大概思路就是这样的

热点排行