В Wicket закодировать или зашифровать URL-адрес - очень простая задача, эта функция предоставляется по умолчанию, вам просто нужно активировать ее.
Обычный URL калитки по умолчанию
http://localhost:8080/WicketExamples/?wicket:interface=:0:urlQueryPanel:
Wicket закодированный или зашифрованный URL
http://localhost:8080/WicketExamples/?x=YwbAGQPpvT9MHF2-6S6FwvocqYPuA
Чтобы включить эту функцию, вставьте следующий код в класс веб-приложений Wicket.
@Override protected IRequestCycleProcessor newRequestCycleProcessor() { return new WebRequestCycleProcessor() { protected IRequestCodingStrategy newRequestCodingStrategy() { return new CryptedUrlWebRequestCodingStrategy( new WebRequestCodingStrategy()); } }; }
Смотрите полный пример …
package com.mkyong; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.protocol.http.WebRequestCycleProcessor; import org.apache.wicket.protocol.http.request.CryptedUrlWebRequestCodingStrategy; import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; import org.apache.wicket.request.IRequestCodingStrategy; import org.apache.wicket.request.IRequestCycleProcessor; import com.mkyong.user.UserPage; public class WicketApplication extends WebApplication { @Override public Class<UserPage> getHomePage() { return UserPage.class;//return default page } @Override protected IRequestCycleProcessor newRequestCycleProcessor() { return new WebRequestCycleProcessor() { protected IRequestCodingStrategy newRequestCodingStrategy() { return new CryptedUrlWebRequestCodingStrategy( new WebRequestCodingStrategy()); } }; } }
Готово.
Немного подумал
Wicket использует механизм шифрования на основе пароля для кодирования и декодирования URL. Все необходимые классы расположены в « wicket-1.4-rc1-sources.jar \ org \ apache \ wicket \ util \ crypt «. Я думаю, что наиболее мощной функцией является индивидуальный ключ случайного шифрования сеанса, он использует сеанс и UUID для его генерации, так что каждый посетитель использует свой собственный ключ шифрования (другой сеанс http).
File: KeyInSessionSunJceCryptFactory.java
if (key == null) { //generate new key key = session.getId() + "." + UUID.randomUUID().toString(); session.setAttribute(keyAttr, key); }
В механизме шифрования на основе пароля «Солт» и «Счетчик итераторов» являются общедоступными, но с надежным ключом шифрования (session + UUID), как указано выше, это просто делает функцию кодирования URL Wicket очень сложной для декодирования, даже если у вас есть Исходный код калитки на руках.
Если вы считаете, что используемый по умолчанию механизм шифрования Wicket недостаточно безопасен, вы можете легко реализовать другой механизм шифрования, например AES или SHA .
Рекомендации
стратегии кодирования], https://cwiki.apache.org/WICKET/obfuscating-urls.html [Wicket
запутывающие URL-адреса]
ссылка://тег/URL/[URL]ссылка://тег/калитка/[калитка]