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.

xml threat protection

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.

Comment

Especifica la cantidad máxima de caracteres del valor de cualquier comentario.

<!--comment-->

En este ejemplo, el comentario tiene 7 caracteres.

Processing Instruction Data

Especifica la cantidad máxima de caracteres del valor de cualquier processing instruction data.

<?xml-sensedia version="1.0" encoding="utf-8"?>

En este ejemplo, utf-8 tiene 5 y 1.0 tiene 2 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

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]