Security 在模板中插入一些支票是否存在问题?
如果我在模板文件中插入一些检查,是否存在一些问题?例如,如果我将用户检查插入到模板的xhtml文件中,如果我在所有xhtml页面中使用此模板,可能会出现一些安全问题 比如:Security 在模板中插入一些支票是否存在问题?,security,jsf-2,Security,Jsf 2,如果我在模板文件中插入一些检查,是否存在一些问题?例如,如果我将用户检查插入到模板的xhtml文件中,如果我在所有xhtml页面中使用此模板,可能会出现一些安全问题 比如: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><ui:insert name="title">Default Title</ui:insert></title>
<h:outputStylesheet name="css/jsfcrud.css"/>
</h:head>
<h:body>
<h:panelGroup rendered="#{userBean.cognome!=null}">
Utente connesso:<h:outputText value="#{userBean.cognome}"/> <h:outputText value="#{userBean.nome}"/>
<h1><ui:insert name="title">Default Title</ui:insert></h1>
<p><ui:insert name="body">Default Body</ui:insert></p>
</h:panelGroup>
</h:body>
</html>
默认标题
康纳索中尉:
默认标题
默认主体
我怀疑您是否会遇到安全问题,但请确保将模板放在WEB-INF文件夹中,这样模板就不会从外部可见。我还建议您使用Spring Security 我知道您在显示内容之前正在检查登录用户的状态。这样可能没问题,但是任何未登录就打开页面的用户都会收到空白内容。这对用户不是很友好。您希望将未登录的用户重定向到登录页面
如果您使用的是JavaEE提供的容器管理的身份验证,通常已经考虑到了这一点。但如果您是家庭成长认证,则需要为此创建一个新的身份验证。如果您在一个公共文件夹(如/app
)中收集所有受限制的页面,以便可以使用公共URL模式进行筛选,例如/app/*
(并将所有公共页面(如登录页面)置于该文件夹之外),那么您应该能够筛选出未登录的用户,假设{userBean}
是会话范围内的JSF@ManagedBean
或您自己放在会话范围内的某个会话属性:
@WebFilter("/app/*")
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
// NOOP.
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
UserBean user = (session != null) ? (UserBean) session.getAttribute("userBean") : null;
if (user == null || user.getCognome() == null) {
response.sendRedirect(request.getContextPath() + "/login.xhtml"); // No logged-in user found, so redirect to login page.
} else {
chain.doFilter(req, res); // Logged-in user found, so just continue request.
}
}
@Override
public void destroy() {
// NOOP.
}
}
另见: