|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.glassfish.grizzly.http.util.HttpRequestURIDecoder
public class HttpRequestURIDecoder
Utility class that make sure an HTTP url defined inside a MessageBytes
is normalized, converted and valid. It also makes sure there is no security
hole. Mainly, this class can be used by doing:
HttpRequestURIDecoder.decode(decodedURI, urlDecoder, encoding, b2cConverter);
| Field Summary | |
|---|---|
protected static boolean |
ALLOW_BACKSLASH
|
| Constructor Summary | |
|---|---|
HttpRequestURIDecoder()
|
|
| Method Summary | |
|---|---|
static boolean |
checkNormalize(CharChunk uriCC)
Check that the URI is normalized following character decoding. |
protected void |
convertMB(MessageBytes mb)
Character conversion of the a US-ASCII MessageBytes. |
static void |
convertToChars(DataChunk decodedURI,
java.nio.charset.Charset encoding)
Converts the normalized the HTTP request represented by the bytes inside DataChunk to chars representation, using the passed encoding. |
protected static void |
copyBytes(byte[] b,
int dest,
int src,
int len)
Copy an array of bytes to a different position. |
static void |
decode(DataChunk decodedURI)
Decode the HTTP request represented by the bytes inside DataChunk. |
static void |
decode(DataChunk decodedURI,
boolean isSlashAllowed)
Decode the HTTP request represented by the bytes inside DataChunk. |
static void |
decode(DataChunk decodedURI,
boolean isSlashAllowed,
java.nio.charset.Charset encoding)
Decode the HTTP request represented by the bytes inside DataChunk. |
static void |
decode(DataChunk originalURI,
DataChunk targetDecodedURI,
boolean isSlashAllowed,
java.nio.charset.Charset encoding)
Decode the HTTP request represented by the bytes inside DataChunk. |
static void |
decode(MessageBytes decodedURI,
UDecoder urlDecoder)
Decode the http request represented by the bytes inside MessageBytes
using an UDecoder. |
static void |
decode(MessageBytes decodedURI,
UDecoder urlDecoder,
java.lang.String encoding,
B2CConverter b2cConverter)
Decode the HTTP request represented by the bytes inside MessageBytes
using an UDecoder, using the specified encoding, using the specified
[@link B2CConverter} to decode the request. |
protected void |
log(java.lang.String message)
Log a message on the Logger associated with our Container (if any) |
protected void |
log(java.lang.String message,
java.lang.Throwable throwable)
Log a message on the Logger associated with our Container (if any) |
static boolean |
normalize(DataChunk dataChunk)
Normalize URI. |
static boolean |
normalize(MessageBytes uriMB)
Normalize URI. |
static boolean |
normalizeBuffer(BufferChunk bc)
|
static boolean |
normalizeBytes(ByteChunk bc)
|
static boolean |
normalizeChars(CharChunk uriCC)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final boolean ALLOW_BACKSLASH
| Constructor Detail |
|---|
public HttpRequestURIDecoder()
| Method Detail |
|---|
public static void decode(MessageBytes decodedURI,
UDecoder urlDecoder)
throws java.lang.Exception
MessageBytes
using an UDecoder.
decodedURI - - The bytes to decodeurlDecoder - - The urlDecoder to use to decode.
java.lang.Exception
public static void decode(MessageBytes decodedURI,
UDecoder urlDecoder,
java.lang.String encoding,
B2CConverter b2cConverter)
throws java.lang.Exception
MessageBytes
using an UDecoder, using the specified encoding, using the specified
[@link B2CConverter} to decode the request.
decodedURI - - The bytes to decodeurlDecoder - - The urlDecoder to use to decode.encoding - the encoding value, default is UTF-8.b2cConverter - the Bytes to Char Converter.
java.lang.Exception
public static void decode(DataChunk decodedURI)
throws java.io.CharConversionException
DataChunk.
decodedURI - - The bytes to decode
java.lang.Exception
java.io.CharConversionException
public static void decode(DataChunk decodedURI,
boolean isSlashAllowed)
throws java.io.CharConversionException
DataChunk.
decodedURI - - The bytes to decodeisSlashAllowed - allow encoded slashes
java.lang.Exception
java.io.CharConversionException
public static void decode(DataChunk decodedURI,
boolean isSlashAllowed,
java.nio.charset.Charset encoding)
throws java.io.CharConversionException
DataChunk.
decodedURI - - The bytes to decodeencoding - the encoding value, default is UTF-8.
java.lang.Exception
java.io.CharConversionException
public static void decode(DataChunk originalURI,
DataChunk targetDecodedURI,
boolean isSlashAllowed,
java.nio.charset.Charset encoding)
throws java.io.CharConversionException
DataChunk.
originalURI - - The bytes to decodetargetDecodedURI - the target DataChunk URI will be decoded toisSlashAllowed - is '/' an allowable characterencoding - the encoding value, default is UTF-8
java.lang.Exception
java.io.CharConversionException
public static void convertToChars(DataChunk decodedURI,
java.nio.charset.Charset encoding)
throws java.io.CharConversionException
DataChunk to chars representation, using the passed encoding.
decodedURI - - The bytes to decodeencoding - the encoding value, default is UTF-8.
java.lang.Exception
java.io.CharConversionExceptionpublic static boolean normalize(MessageBytes uriMB)
This method normalizes "\", "//", "/./" and "/../". This method will return false when trying to go above the root, or if the URI contains a null byte.
uriMB - URI to be normalizedpublic static boolean normalize(DataChunk dataChunk)
This method normalizes "\", "//", "/./" and "/../". This method will return false when trying to go above the root, or if the URI contains a null byte.
dataChunk - URI to be normalizedpublic static boolean checkNormalize(CharChunk uriCC)
This method checks for "\", 0, "//", "/./" and "/../". This method will return false if sequences that are supposed to be normalized are still present in the URI.
uriCC - URI to be checked (should be chars)public static boolean normalizeChars(CharChunk uriCC)
protected static void copyBytes(byte[] b,
int dest,
int src,
int len)
protected void log(java.lang.String message)
message - Message to be logged
protected void log(java.lang.String message,
java.lang.Throwable throwable)
message - Message to be loggedthrowable - Associated exceptionprotected void convertMB(MessageBytes mb)
public static boolean normalizeBytes(ByteChunk bc)
public static boolean normalizeBuffer(BufferChunk bc)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||