Author: jcompagner
Date: Wed Sep 24 07:05:24 2008
New Revision: 698577
URL: http://svn.apache.org/viewvc?rev=698577&view=rev
Log:
better error reporting what urls and what encrypted text cant be decrypted
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/crypt/AbstractCrypt.java
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java?rev=698577&r1=698576&r2=698577&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
Wed Sep 24 07:05:24 2008
@@ -27,8 +27,8 @@
import org.apache.wicket.RequestCycle;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.protocol.http.RequestUtils;
-import org.apache.wicket.protocol.http.WicketURLEncoder;
import org.apache.wicket.protocol.http.WicketURLDecoder;
+import org.apache.wicket.protocol.http.WicketURLEncoder;
import org.apache.wicket.request.IRequestCodingStrategy;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy;
@@ -71,8 +71,7 @@
public class CryptedUrlWebRequestCodingStrategy implements
IRequestCodingStrategy
{
/** log. */
- private static final Logger log = LoggerFactory
- .getLogger(CryptedUrlWebRequestCodingStrategy.class);
+ private static final Logger log =
LoggerFactory.getLogger(CryptedUrlWebRequestCodingStrategy.class);
/** The default request coding strategy most of the methods are
delegated to */
private final IRequestCodingStrategy defaultStrategy;
@@ -201,11 +200,11 @@
// encrypt the query string
String encryptedQueryString =
urlCrypt.encryptUrlSafe(queryString);
- encryptedQueryString =
WicketURLEncoder.QUERY_INSTANCE.encode(encryptedQueryString);
+ encryptedQueryString =
WicketURLEncoder.QUERY_INSTANCE.encode(encryptedQueryString);
// build the new complete url
return new
AppendingStringBuffer(urlPrefix).append("?x=").append(
- encryptedQueryString);
+ encryptedQueryString);
}
}
}
@@ -243,8 +242,10 @@
secureParam =
WicketURLDecoder.QUERY_INSTANCE.decode(secureParam);
// Get the crypt implementation from the
application
- final ICrypt urlCrypt =
Application.get().getSecuritySettings().getCryptFactory()
- .newCrypt();
+ final ICrypt urlCrypt = Application.get()
+ .getSecuritySettings()
+ .getCryptFactory()
+ .newCrypt();
// Decrypt the query string
String queryString =
urlCrypt.decryptUrlSafe(secureParam);
@@ -256,7 +257,7 @@
}
catch (Exception ex)
{
- return onError(ex);
+ return onError(ex, url);
}
}
return null;
@@ -266,14 +267,20 @@
* @param ex
*
* @return decoded URL
+ * @deprecated Use [EMAIL PROTECTED] #onError(Exception, String)}
*/
protected String onError(final Exception ex)
{
- log.error("Invalid URL", ex);
-
throw new HackAttackException("Invalid URL");
}
+ protected String onError(final Exception ex, String url)
+ {
+ log.error("Invalid URL: " + url, ex);
+
+ return onError(ex);
+ }
+
/**
* Try to shorten the querystring without loosing information. Note:
WebRequestWithCryptedUrl
* must implement exactly the opposite logic.
@@ -285,19 +292,19 @@
protected CharSequence shortenUrl(CharSequence queryString)
{
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.BEHAVIOR_ID_PARAMETER_NAME + "=", "1*");
+ WebRequestCodingStrategy.BEHAVIOR_ID_PARAMETER_NAME +
"=", "1*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IRedirectListener", "2*");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IRedirectListener", "2*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IFormSubmitListener",
"3*");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IFormSubmitListener", "3*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IOnChangeListener", "4*");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IOnChangeListener", "4*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=ILinkListener", "5*");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=ILinkListener", "5*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=", "6*");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=", "6*");
queryString = Strings.replaceAll(queryString,
-
WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME + "=", "7*");
+
WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME + "=", "7*");
// For debugging only: determine possibilities to further
shorten
// the query string
@@ -328,19 +335,19 @@
protected String rebuildUrl(CharSequence queryString)
{
queryString = Strings.replaceAll(queryString, "1*",
-
WebRequestCodingStrategy.BEHAVIOR_ID_PARAMETER_NAME + "=");
+ WebRequestCodingStrategy.BEHAVIOR_ID_PARAMETER_NAME +
"=");
queryString = Strings.replaceAll(queryString, "2*",
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IRedirectListener");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IRedirectListener");
queryString = Strings.replaceAll(queryString, "3*",
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IFormSubmitListener");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IFormSubmitListener");
queryString = Strings.replaceAll(queryString, "4*",
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=IOnChangeListener");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=IOnChangeListener");
queryString = Strings.replaceAll(queryString, "5*",
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=ILinkListener");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=ILinkListener");
queryString = Strings.replaceAll(queryString, "6*",
-
WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME + "=");
+ WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME +
"=");
queryString = Strings.replaceAll(queryString, "7*",
-
WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME + "=");
+
WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME + "=");
return queryString.toString();
}
@@ -371,7 +378,7 @@
* @param encodedParamReplacement
*/
public DecodedUrlRequest(final Request request, final String
url,
- final String encodedParamReplacement)
+ final String encodedParamReplacement)
{
this.request = request;
@@ -381,7 +388,7 @@
// Remove the 'x' parameter which contains ALL the
encoded params
parameterMap.remove("x");
String decodedParamReplacement =
encodedParamReplacement;
- decodedParamReplacement =
WicketURLDecoder.QUERY_INSTANCE.decode(encodedParamReplacement);
+ decodedParamReplacement =
WicketURLDecoder.QUERY_INSTANCE.decode(encodedParamReplacement);
// Add ALL of the params from the decoded 'x' param
ValueMap params = new ValueMap();
@@ -397,7 +404,7 @@
int pos2 = url.indexOf("&");
AppendingStringBuffer urlBuf = new
AppendingStringBuffer(url.length() +
- encodedParamReplacement.length());
+ encodedParamReplacement.length());
urlBuf.append(url.subSequence(0, pos1 + 1));
urlBuf.append(encodedParamReplacement);
if (pos2 != -1)
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/crypt/AbstractCrypt.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/crypt/AbstractCrypt.java?rev=698577&r1=698576&r2=698577&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/crypt/AbstractCrypt.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/crypt/AbstractCrypt.java
Wed Sep 24 07:05:24 2008
@@ -68,7 +68,7 @@
}
catch (UnsupportedEncodingException ex)
{
- throw new WicketRuntimeException(ex.getMessage());
+ throw new WicketRuntimeException("Error decoding text:
" + text, ex);
}
}
@@ -125,7 +125,7 @@
* @throws GeneralSecurityException
*/
protected abstract byte[] crypt(final byte[] input, final int mode)
- throws GeneralSecurityException;
+ throws GeneralSecurityException;
/**
* Decrypts an encrypted, but Base64 decoded byte array into a byte
array.
@@ -142,8 +142,8 @@
}
catch (GeneralSecurityException e)
{
- throw new WicketRuntimeException("Unable to decrypt the
text '" + encrypted.toString() +
- "'", e);
+ throw new WicketRuntimeException("Unable to decrypt the
text '" +
+ new String(encrypted) + "'", e);
}
}
@@ -156,7 +156,7 @@
* @throws GeneralSecurityException
*/
private final byte[] encryptStringToByteArray(final String plainText)
- throws GeneralSecurityException
+ throws GeneralSecurityException
{
try
{