2011-12-31 114 views
1

我正在使用JBoss 5开发使用Java EE的Web项目。我的WebContent文件夹有一个.css文件,供所有JSP(放置在WebContent的其他子文件夹中)使用。我想禁止直接访问.css文件,但仍然可以在我的JSP中使用它。我尝试了禁止直接访问.css文件

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Direct access to .css forbidden</web-resource-name> 
    <url-pattern>/Style.css</url-pattern> 
    </web-resource-collection> 
    <auth-constraint/> 
</security-constraint> 

在web.xml描述符中,但这种方式JSP无法使用它。

任何想法?

+2

为什么你要这样做 - 保护CSS源代码? – 2011-12-31 01:06:51

+1

无论你是否禁止直接访问,客户端仍然需要下载并解析你的CSS,这很容易被Firebug_et al_读取。 – Bojangles 2011-12-31 01:08:54

+0

@Pekka是的,我不希望CSS可见。 – Simon 2011-12-31 01:09:29

回答

5

任何试图隐藏最终用户在页面上使用的CSS都是毫无意义的。

您可以检查HTTP_REFERER标题,如果它不匹配嵌入样式表的页面,则不显示CSS。

但即使这样,在现代浏览器中,CSS可在DOM检查器中看到,并且可以使用正确的引用集进行单击,这些都无济于事。

浏览器需要查看CSS才能呈现它,因此没有任何保护措施可以提供帮助。你可以做的最好的(但它需要你改变你的HTML)混淆了CSS,所以没有更清晰的元素名称(例如.xweudhd而不是.top_navigation)。

但我会完全放弃这个想法。有更多有效的方式花时间。

+0

“毫无意义”,无一例外,条件,缓解或预设。 +1 – 2011-12-31 01:20:21

+2

感谢您的详尽答复。我只是想避免用户看到不必要的东西(比如.css),但正如我所看到的,这不值得。 – Simon 2011-12-31 01:21:02