XML Threat Protection
XML Threat Protection es un interceptor que valida el contenido de un XML, siguiendo límites predefinidos para una serie de componentes. Así, es posible ataques maliciosos que envían información fuera de la estructura esperada.
Para configurar el interceptor, tenemos que llenar las propiedades de la imagen de abajo con los valores esperados. Puede leer sobre cada una de las informaciones solicitadas en las próximas subsecciones.
Campo: Name Limits
Element
Especifica el tamaño máximo del nombre de cualquier elemento en el XML.
<Customers>
<Customer CustomerID="6s695dp84">
<CompanyName>Sensedia</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(19) 555-7555</Phone>
<FullAddress>
<Address>Rua Dr. Ricardo Benetton Martins.</Address>
<City>Campinas</City>
<Region>SP</Region>
<PostalCode>13086-902</PostalCode>
<Country>BR</Country>
</FullAddress>
</Customer>
</Customers>
En el ejemplo anterior, podemos configurar como 12. El interceptor verificará si ningún elemento excede 12 caracteres.
Attribute
Especifica el tamaño máximo para cualquier atributo en el XML.
<Customer CustomerID="6s695dp84">
<CompanyName>Sensedia</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(19) 555-7555</Phone>
</Customer>
En este ejemplo, él verifica si el tamaño del atributo CustomerID
no excede la cantidad permitida de caracteres definida en la configuración.
Namespace prefix
Especifica el tamaño máximo de caracteres para cualquier prefijo en el XML.
<sensedia:gateway xmlns:sensedia="http://sensedia.com" xmlns:manager="http:sensedia.com/api-manager"
En este ejemplo, él verifica el tamaño del namespace sensedia
, que en el caso tiene 8 caracteres.
Processing Instruction Target
Especifica el tamaño máximo de caracteres para processing instruction target en el XML.
<?xml-sensedia version="1.0" encoding="utf-8"?>
En este ejemplo, él verifica si xml-sensedia
no excede la cantidad máxima de caracteres.
En este caso xml-sensedia
tiene 12 caracteres.
Campo: Structure Limits
Node depth
Especifica la profundidad máxima permitida en el XML.
<Customers>
<Customer CustomerID="6s695dp84">
<CompanyName>Sensedia</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(19) 555-7555</Phone>
<FullAddress>
<Address>Rua Dr. Ricardo Benetton Martins.</Address>
<City>Campinas</City>
<Region>SP</Region>
<PostalCode>13086-902</PostalCode>
<Country>BR</Country>
</FullAddress>
</Customer>
</Customers>
En este ejemplo, la profundidad es 4.
Attribute count per element
Especifica la cantidad de atributo por elemento en un documento XML.
<Customer CustomerID="3" CustomerID_web="s3ko05456sdsl">
En el ejemplo anterior, el elemento tiene 2 atributos: customerID
y CustomerID_web
.
Namespace count per element
Especifica a cantidad de namespaces por elemento en un documento XML.
<sensedia:gateway xmlns:sensedia="http://sensedia.com" xmlns:manager="http:sensedia.com/api-manager"
manager:sensedia="sensedia">
En este ejemplo, hay 3, xmlns:sensedia
, xmlns:manager
y manager:sensedia
.
Child count
Especifica la cantidad de hijos de cualquier elemento en un documento XML.
<Customers>
<Customer CustomerID="6s695dp84">
<CompanyName>Sensedia</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(19) 555-7555</Phone>
<FullAddress>
<Address>Rua Dr. Ricardo Benetton Martins.</Address>
<City>Campinas</City>
<Region>SP</Region>
<PostalCode>13086-902</PostalCode>
<Country>BR</Country>
</FullAddress>
</Customer>
</Customers>
En este ejemplo, el elemento Customer
tiene 5 hijos: CompanyName
, ContactName
, ContactTitle
, Phone
and FullAddress
.
Field: Value Limits
Text
Especifica la cantidad máxima de caracteres del valor de cualquier elemento.
<ContactTitle>Marketing Manager</ContactTitle>
En este ejemplo, el valor Marketing Manager
tiene 17 caracteres.
Attribute
Especifica la cantidad máxima de caracteres del valor de cualquier atributo.
<Customer CustomerID="6s695dp84">
En este ejemplo, el valor 6s695dp84
del atributo CustomerID
tiene 9 caracteres.
Namespace URI
Especifica la cantidad máxima de caracteres del valor de cualquier namespace.
<sensedia:gateway xmlns:sensedia="http://sensedia.com">
En este ejemplo, http://sensedia.com
tiene 19 caracteres.
Errores
A continuación, tenemos los errores que pueden ser retornados cuando el interceptor encuentra una irregularidad.
Error | Cód. HTTP Request | Cód. HTTP Response | |
---|---|---|---|
XML |
XML format invalid |
400 |
500 |
Name Limits/Element |
Name limits element exceeds the maximum allowed for this API (n) |
400 |
500 |
Name Limits/Attribute |
Name limits attribute exceeds the maximum allowed for this API (n) |
400 |
500 |
Name Limits/Namespace prefix |
Name limits namespace prefix exceeds the maximum allowed for this API (n) |
400 |
500 |
Name Limits/Processing Instruction Target |
Name limits processing instruction target exceeds the maximum allowed for this API (n) |
400 |
500 |
Structure Limits/Node depth |
Structure limits node depth element exceeds the maximum allowed for this API (n) |
400 |
500 |
Structure Limits/Attribute count per element |
Structure limits attribute count per element exceeds the maximum allowed for this API (n) |
400 |
500 |
Structure Limits/Namespace count per element |
Structure limits namespace count per element exceeds the maximum allowed for this API (n) |
400 |
500 |
Structure Limits/Child count |
Structure limits child count exceeds the maximum allowed for this API (n) |
400 |
500 |
Value Limits/Text |
Value limits text exceeds the maximum allowed for this API (n) |
400 |
500 |
Value Limits/Attribute |
Value limits attribute exceeds the maximum allowed for this API (n) |
400 |
500 |
Value Limits/Namespace URI |
Value limits namespace URI exceeds the maximum allowed for this API (n) |
400 |
500 |
Value Limits/Comment |
Value limits comment exceeds the maximum allowed for this API (n) |
400 |
500 |
Value Limits/Processing Instruction Data |
Value limits processing instruction data exceeds the maximum allowed for this API (n) |
400 |
500 |
Invalid Content-Type |
XML threat protection validation failed: Invalid Content-Type in Header → (Content type) |
415 |
415 |
Content-Type not found |
XML threat protection validation failed: Content-Type not found in Header |
415 |
415 |
Share your suggestions with us!
Click here and then [+ Submit idea]