Dans Wicket, encoder ou chiffrer une URL est une tâche très facile, cette fonctionnalité est fournie par défaut, il vous suffit de l’activer.
URL normale par défaut du Wicket
http://localhost:8080/WicketExamples/?wicket:interface=:0:urlQueryPanel:
URL encodée ou cryptée par Wicket
http://localhost:8080/WicketExamples/?x=YwbAGQPpvT9MHF2-6S6FwvocqYPuA
Pour activer cette fonctionnalité, collez le code suivant dans la classe d’application Web de Wicket.
@Override protected IRequestCycleProcessor newRequestCycleProcessor() { return new WebRequestCycleProcessor() { protected IRequestCodingStrategy newRequestCodingStrategy() { return new CryptedUrlWebRequestCodingStrategy( new WebRequestCodingStrategy()); } }; }
Voir l’exemple complet …
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()); } }; } }
Terminé.
Un peu de pensée
Wicket utilise un mécanisme de cryptage basé sur mot de passe pour encoder et décoder l’URL. Toutes les classes nécessaires sont situées dans « wicket-1.4-rc1-sources.jar \ org \ apache \ wicket \ util \ crypt ». Je pense que la fonctionnalité la plus puissante est la clé de cryptage aléatoire de session individuelle. Elle utilise session et UUID pour la générer, de sorte que chaque visiteur utilise sa propre clé de cryptage (session http différente).
Fichier: Key InSessionSunJceCrypt Factory.java
if (key == null) { //generate new key key = session.getId() + "." + UUID.randomUUID().toString(); session.setAttribute(keyAttr, key); }
Dans le mécanisme de cryptage basé sur mot de passe, «Salt» et «Iterator count» sont publics, mais avec une clé de cryptage forte (UUID de session) comme ci-dessus, il est très difficile de décoder l’URL du Wicket code source sur les mains.
Si vous pensez que le mécanisme de cryptage par défaut de Wicket n’est pas suffisamment sûr, vous pouvez facilement mettre en œuvre un mécanisme de cryptage différent tel que AES ou SHA .
Références
stratégies de codage]. https://cwiki.apache.org/WICKET/obfuscating-urls.html [Wicket
obscurcissement des URL]
lien://tag/url/[url]lien://tag/guichet/[guichet]