0

我正在使用 struts 1.2 并使用 global-forwards 来访问我的 jsp 文件,并且即使在将 /pages/* 放入安全约束之后,我也将安全约束放在了我的 web.xml 文件中,我可以控制通过 url http:/直接访问我的 jsp /localhost:8080/mywebsite/pages/home.jsp但是每当有人将鼠标指向我的菜单项时,他都能看到像 http://localhost:8080/mywebsite/home.do这样的 URL,我在 iframe 中显示,所以什么也没有可以通过点击上面的 url 来停止对 home.jsp 的直接访问,并且能够看到我只想在我的 index.jsp 的 iframe 中显示的 home.jsp 下面是我正在使用的安全约束,我也不会使用这样的约束 <url-pattern>*.do</url-pattern>甚至会停止也在 iframe 中显示 home.jsp。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>JSP Files</web-resource-name>
        <description>No direct access to JSP files</description>


        <url-pattern>/pages/*</url-pattern>

  <http-method>POST</http-method>
        <http-method>GET</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description>No direct browser access to JSP files</description>
        <role-name>NobodyHasThisRole</role-name>
    </auth-constraint>
</security-constraint>

这是我的 struts-config.xml 中的配置

<global-forwards>

    <forward name="home" path="/home.do"/>
 </global-forwards>

<action-mappings>
<action  path="/home"  forward="/pages/home.jsp"/>
</action-mappings>
4

1 回答 1

0

将 JSP 文件放在/WEB-INF. 服务器不会从/WEB-INF文件夹中提供任何内容。您甚至不需要web.xml. 有关更多详细信息,请参阅“Jakarta Struts - 战壕中的七个教训”,第 4 章,“保护 WEB-INF 后面的 JSP ”。

完成此操作后,您就可以通过 Struts 操作控制对主页的访问。这就是使用 Struts 的全部想法,因此您不再直接访问 JSP 文件,而是始终执行*.do操作。

如果您想为所有请求保护您的 JSP,除非请求来自 . iframe,那么这是不可能的。

于 2015-03-14T16:20:50.560 回答