2011-12-31 3 views
1

Я разрабатываю веб-проект с Java EE с помощью JBoss 5. В моей папке 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? –

+1

Независимо от того, запрещаете ли вы прямой доступ или нет, клиентам по-прежнему приходится загружать и анализировать ваш CSS, который легко читается Firebug _et al_. – Bojangles

+0

@Pekka Да, я не хочу, чтобы CSS был виден. – Simon

ответ

5

Любая попытка скрыть CSS, используемый на странице у конечного пользователя, совершенно бессмысленна.

Вы можете проверить заголовок HTTP_REFERER и не отображать CSS, если он не соответствует странице, в которой встроена таблица стилей.

Но даже это не поможет в современных браузерах, где CSS отображается в инспекторе DOM и доступен с помощью подходящего набора референтов.

Браузеру необходимо увидеть CSS для его рендеринга, поэтому нет меры защиты, которая поможет. Лучшее, что вы можете сделать (но это требует изменения вашего HTML), - это запутывание CSS, поэтому больше нет разборчивых имен элементов (например, .xweudhd вместо .top_navigation).

Но я бы вообще отказался от этой идеи. Есть более эффективные способы провести свое время.

+0

«совершенно бессмысленный», без исключения, состояние, смягчение или престидигитация. +1 –

+2

Спасибо за исчерпывающий ответ. Я просто хотел, чтобы пользователи не видели ненужные вещи (например .css), но, как я вижу, это не стоит. – Simon

Смежные вопросы