Comment chiffrer/encoder une URL dans le Wicket

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

obscurcissement des URL]

lien://tag/url/[url]lien://tag/guichet/[guichet]