现在有个web工程, 目录下有web/admin/video 三等目录
防止用户在地址栏敲入http://localhost:8080/web/admin 看到所有admin目录下的所有jsp页面 请问怎么办好?
防止用户在地址栏敲入http://localhost:8080/web/admin 看到所有admin目录下的所有jsp页面 请问怎么办好?
解决方案 »
- java项目发布的问题
- Java入门用什么书?
- ajax 报异常 java.lang.IllegalStateException: getOutputStream() has already been called for this response
- 这种下拉列表框Struts框架怎么得到值啊?
- JAVA 区间拆解的问题!麻烦哪位大虾可以帮助一下
- 求一个爬网页的代码 或者 图形化解析某个网页的代码
- 连接数据库时,不同jar包中的Connection以及它们各自的区别!!!
- 如何使用HQL实现union功能
- 福州:Java+Struts+Hibernate
- hibernate4+spring4部署在weblogic上启动报错,在tomcat正常运行
- 求解Attribute "namespace" must be declared for element type "sqlMapConfig"
- spring mvc映射默认路径
<!-- 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");
}
这个方法有点古老的。
先查下filter的使用方法吧
你可以先设置session,如果有用户登陆,就把用户信息录入到session中
如果没有用户登陆,那session就为空。
然后再判断session的值,如果是管理员账户信息,则允许进入admin目录,如果session为空或者用户信息不为管理员信息,则强制跳转到一个自定义的错误页面
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("没有找到登录页面或主页");
}
}}web.xml <filter>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<filter-name>LogonFilter</filter-name>
<filter-class>LogonFilter</filter-class>
<init-param>
<param-name>LOGON_URI</param-name>
<param-value>/management/jsp/index.jsp</param-value>
</init-param>
<init-param>
<param-name>HOME_URI</param-name>
<param-value>/management/jsp/</param-value>
</init-param>
</filter>
=============================================================================
没有权限控制吗?你的jsp上不做权限判断啊?
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
这样用户打开目录的时候就不会将所有jsp页面都显示出来了
比如过滤
请教大大们,怎样防止TomCat暴露服务器路径? 文件列表
今天我还弄了呢
是用ssh的项目
拦截器是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;
}
参考 你只需要修改代码就可以啦!!
我测试过没问题。大概思路就是这样的
如果不是就用过滤器判断是否登录等相关信息
对这些资源都进行内部转发。
如果使用struts框架,请使用action进行权限的检查,所有WEB-INF目录下页面请使用org.apache.struts.actions.ForwardAction转发。使用org.apache.struts.actions.IncludeAction包含页面。也就是说你访问页面如果有XXX.JSP(index.jsp除外)那就是错误的。
其它的估计你也不必要了解了。
这种技术也叫做"防盗链"
2.通过SESSION判断用户是否存在
3.把重要页面放到WEB-INF下(STRUTS)
2.通过SESSION判断用户是否存在
3.把重要页面放到WEB-INF下(STRUTS)