如果我在模板文件中插入一些支票,是否会出现问题?例如,如果我将用户检查插入到模板的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-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>
答案 0 :(得分:4)
我了解您在显示内容之前检查已登录用户的存在。此可能可以这样做,但任何未登录而打开页面的用户都将收到空白内容。这不是非常用户友好。您希望将未登录的用户重定向到登录页面。
如果您正在使用Java EE提供的容器管理身份验证,则通常已将此考虑在内。但是,如果您正在进行身份验证,则需要为此创建servlet filter。如果您将所有受限制的网页收集到/app
这样的公共文件夹中,以便您可以使用常用的网址格式进行过滤,例如: /app/*
(并将所有公共页面,例如登录页面放在此文件夹之外),然后您应该能够按如下方式过滤掉未登录的用户,假设{{1是一个会话范围的JSF #{userBean}
或一些你自己放在会话范围内的会话属性:
@ManagedBean
答案 1 :(得分:2)
我怀疑您是否会遇到安全问题,但请确保将模板放在WEB-INF文件夹中,这样模板就无法从外部看到。我还建议你使用Spring-Security。