В 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]ссылка://тег/калитка/[калитка]