So verschlüsseln Sie die URL in Wicket

In Wicket ist das Verschlüsseln oder Verschlüsseln von URLs eine sehr einfache Aufgabe. Diese Funktion wird standardmäßig bereitgestellt. Sie müssen sie nur aktivieren.

Standard-URL der Wicket

http://localhost:8080/WicketExamples/?wicket:interface=:0:urlQueryPanel:

Wicket-kodierte oder verschlüsselte URL

http://localhost:8080/WicketExamples/?x=YwbAGQPpvT9MHF2-6S6FwvocqYPuA

Um diese Funktion zu aktivieren, fügen Sie den folgenden Code in die Webanwendungsklasse von Wicket ein.

        @Override
    protected IRequestCycleProcessor newRequestCycleProcessor() {

        return new WebRequestCycleProcessor() {
            protected IRequestCodingStrategy newRequestCodingStrategy() {
                return new CryptedUrlWebRequestCodingStrategy(
                    new WebRequestCodingStrategy());
            }
        };
    }

Vollständiges Beispiel ansehen …​

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());
            }
        };
    }

}

Erledigt.

Ein kleiner Gedanke

Wicket verwendet den kennwortbasierten Verschlüsselungsmechanismus zum Kodieren und Dekodieren von URLs. Alle erforderlichen Klassen befinden sich unter „ wicket-1.4-rc1-sources.jar \ org \ apache \ wicket \ util \ crypt “. Ich denke, dass die leistungsfähigste Funktion der zufällige Verschlüsselungsschlüssel für die einzelnen Sitzungen ist. Er generiert eine Sitzung und eine UUID, um ihn zu generieren, sodass jeder Besucher seinen eigenen Verschlüsselungsschlüssel verwendet (andere HTTP-Sitzung).

Datei: KeyInSessionSunJceCryptFactory.java

if (key == null)
{
   //generate new key
    key = session.getId() + "." + UUID.randomUUID().toString();
    session.setAttribute(keyAttr, key);
}

Beim Mechanismus für kennwortbasierte Verschlüsselung ist "Salt" und "Iterator count" zwar öffentlich, aber mit einem starken Verschlüsselungsschlüssel (Session-UUID) wie oben beschrieben, lässt sich die URL-Codierung des Wicket nur sehr schwer decodieren, selbst wenn Sie die des Wickets haben Quellcode auf Händen.

Wenn Sie der Meinung sind, dass der Standard-Verschlüsselungsmechanismus von Wicket nicht sicher genug ist, können Sie leicht einen anderen Verschlüsselungsmechanismus wie AES oder SHA implementieren.