Определите защищенный URL в JSP с пружинной безопасностью - PullRequest
0 голосов
/ 14 сентября 2010

Как и многие веб-сайты, у меня есть всплывающее окно входа на каждой веб-странице моего сайта.Большинство из этих страниц являются http (небезопасными).Но механизм входа в систему должен отправлять на безопасный URL-адрес.Все это прекрасно работает.Проблема заключается в безопасных изменениях URL-адресов в различных средах разработки, промежуточных и производственных средах.

Так что не так уж и сложно, у меня просто есть файл свойств для каждой среды с защищенным хостом и портом.Теперь есть способ кодировать URL с правильным контекстом и идентификатором jsession (если необходимо) и другими вещами, которые обычно делает c: url?

, например:

<form method="post" action="${rootHttpsUrl}/login">

Я мог бы подуматьэто будет работать, чтобы изменить URL, чтобы добавить правильный контекст, информацию о сеансе, если это необходимо, и т. д .:

<form method="post" action="<c:url value='${rootHttpsUrl}/login'/>">

Но это не работает, потому что c: url видит https://some -url.com и считает, что это внешняя ссылка.Так что я мог бы просто изменить URL-адрес самостоятельно:

<form method="post"
action="<%=response.encodeURL(${rootHttpsUrl}${pageContext.request.contextPath}/login)%>">

Но переход к java-коду, подобному этому, не позволяет java видеть переменную jH rootHttpsUrl (как я могу представить это java?).Есть ли способ вызвать encodeURL из JSP?

Так что же является лучшим решением здесь?Я использую Spring, Spring webmvc и Spring Security v3.0.В идеале есть что-то вроде

<c:url value='/login' secure='true'/>

ОБНОВЛЕНИЕ : лучшее, что я придумал, - это иметь файл свойств для каждой среды со свойством для хоста и порта https.Затем я добавляю это к модели и ссылаюсь на любой безопасный URL-адрес, например:

https://${httpsHostAndPort}<c:url value='/login'/>

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

После 2 часов просмотра различных альтернатив эта страница оказалась действительно полезной.

Моя проблема заключалась в отключении кэширования файлов js и css в моем защищенном веб-приложении.Но в то же время кэширование этих файлов «внутри» определенного сеанса.

Передача уникального идентификатора с каждым запросом является одним из рекомендуемых подходов.

И вот что я сделал: - Вместо этогоиз

<script language="javascript" src="js/home.js"></script>

Я использовал

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Любые минусы вышеупомянутого подхода приветствуются.Проблемы безопасности?

0 голосов
/ 14 сентября 2010

Жестко закодируй это сам.

action="${rootHttpsUrl}/login;jsessionid=${pageContext.session.id}"
...