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.
Referenzen
Codierungsstrategien]. https://cwiki.apache.org/WICKET/obfuscating-urls.html
Verschleierung von URLs]