Wenn Sie JSF verwenden, haben Sie das Controller-Servlet javax.faces.webapp.FacesServlet, das auf Folgendes abgebildet wird:
<servlet-mapping>
...
<url-pattern>/somefacesurl/*</url-pattern>
</servlet-mapping>
Wenn wir eine mypage.xhtml in / ablegen, haben wir ein Sicherheitsrisiko, da auf sie auf zwei Arten zugegriffen wird (ausgehend vom Anwendungskontext): 1) /somefacesurl/mypage.xhtml
2) /mypages.xhtml
Die erste wird von jsf verarbeitet und ist korrekt. Die zweite wird nicht von jsf verarbeitet und wird daher dem Client mit jsf-Tags präsentiert, was ein Sicherheitsrisiko darstellt.
Ich habe nur zwei Lösungen gefunden
1) immer auf die Root-Url abbilden:
<servlet-mapping>
...
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Gute Lösung, erlaubt aber nur Zuordnungen nach Dateierweiterung.
2) Verknüpfen Sie mit einer beliebigen URL und verwenden Sie die Sicherheitseinschränkung, um den Zugriff auf diese Dateien zu verbieten, wie in vorgeschlagen: Wie verhindert man den Benutzerzugriff auf die .xhtml-Seite in JSF?
Beide Lösungen werden in der JSF 2.0-Spezifikation als praktikable Alternativen vorgestellt, ABER es wird kein Wort über den unterschiedlichen Sicherheitsansatz der beiden Lösungen verloren.
Da die Sicherheit NICHT berücksichtigt wird, frage ich mich, ob die erste "sicher" ist, was den Zugriff auf die xhtml-Dateien angeht, oder ob es vielleicht einen Hack gibt, um die .xhtml-Quellen zu erhalten.