我需要关于如何在我当前的Java网站上获得最大安全的建议。
我已经将这两个应用程序部署在Centos6服务器上端口8080的tomcat-7的一个实例下。
.war文件
批罐
安全需求
目前,我已将其添加到web.xml of processor.war以保护以下内容
下面是我对processor.war的web.xml文件的配置。
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Public</web-resource-name>
<url-pattern>/processor/process*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>这够安全吗?我读过攻击者可以伪造请求并读取HTTP请求中的密码。我只想确保processor.war的安全
有人能告诉我更多的安全是必要的吗?如果是的话,我能做些什么来确保它的安全?
发布于 2016-05-13 23:48:52
我是如何理解建筑的,你已经把前端和后端分开了。前端没有安全漏洞,但希望保护后端服务(如果存在一些html、css、js文件)
如果你能用可以理解的方式来做这件事,请解释为什么你需要这个方法?
Tomcat是一个Servlet容器,这意味着这里的所有东西都是普通Java。这就是为什么您可以轻松地保护任何您喜欢的URL。或者您可以构造基于自定义角色或基于权限的安全系统。此外,在Filter的帮助下,您可以过滤App特定应用程序(WAR)中的任何url请求文件。
下面是一个简单的例子:
@WebFilter("/secured/*")
public class LoginFilter implements Filter {
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println(" loginFilter servlet begin ");
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpServletRequest httpRequest = (HttpServletRequest) request;
String URI = ((HttpServletRequest)request).getRequestURI();
HttpSession session =httpRequest.getSession(false);
String emailFromWeb = null;
String loginURL = httpRequest.getContextPath() + "/login.html";
String rootURL = httpRequest.getContextPath() + "/secured/root.html";
String userURL = httpRequest.getContextPath() + "/secured/user.html";
String logoutURL=httpRequest.getContextPath() + "/logout";
if(session==null){
System.out.println("false inquery session is null");
httpResponse.sendRedirect(loginURL);
return;
}
emailFromWeb = session.getAttribute("email").toString();
System.out.println(" email from Session "+emailFromWeb);
if (httpRequest.getRequestURI().equals(loginURL)){
System.out.println("login page inquery");
chain.doFilter(request, response);
return;
}
if(httpRequest.getRequestURI().matches(".*(css|jpg|png|gif|js)")){
System.out.println(" inquery by "+httpRequest.getRequestURI());
chain.doFilter(request, response);
return;
}
if (httpRequest.getRequestURI().equals(rootURL)&&Authentication.isPermitted(emailFromWeb, "RootPage")) {
System.out.println("root page inquery");
chain.doFilter(request, response);
return;
}
else if(httpRequest.getRequestURI().equals(userURL)&&Authentication.isPermitted(emailFromWeb, "UserPage")){
System.out.println("user page inquery");
chain.doFilter(request, response);
return;
}
else if(httpRequest.getRequestURI().equals(logoutURL)){
System.out.println("logout inquery");
httpResponse.sendRedirect(loginURL);
return;
}
else {
System.out.println("false inquery");
httpResponse.sendRedirect(loginURL);
return;
}
}
}https://stackoverflow.com/questions/17803613
复制相似问题