XML Threat Protection

XML Threat Protection é um interceptor que valida o conteúdo de um XML a partir de limites pré-definidos para uma série de componentes. Assim, ele evita que ataques maliciosos que enviam informações fora do padrão esperado sejam bem-sucedidos.

Para configurar o interceptor, temos que preencher os campos da imagem abaixo com os valores esperados. Você pode ler a respeito de cada uma das informações requisitadas nas próximas subseções.

xml threat protection

Campo: Name Limits

Element

Especifica o tamanho máximo do nome de qualquer elemento no 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>

No exemplo acima, podemos configurar como 12. Então, o interceptor verificará se nenhum elemento excede 12 caracteres.

Attribute

Especifica o tamanho máximo para qualquer atributo no XML.

<Customer CustomerID="6s695dp84">
  <CompanyName>Sensedia</CompanyName>
  <ContactName>Howard Snyder</ContactName>
  <ContactTitle>Marketing Manager</ContactTitle>
  <Phone>(19) 555-7555</Phone>
</Customer>

Para o exemplo acima, o interceptor verificará se o tamanho do atributo CustomerID não excede a quantidade permitida de caracteres definida na configuração.

Namespace prefix

Especifica o tamanho máximo de caracteres para qualquer prefixo no XML.

<sensedia:gateway xmlns:sensedia="http://sensedia.com" xmlns:manager="http:sensedia.com/api-manager"

Nesse exemplo, ele verificará o tamanho do namespace sensedia, que, no caso, tem oito caracteres.

Processing Instruction Target

Especifica o tamanho máximo de caracteres para processing instruction target no XML.

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

Nesse exemplo, o interceptor verificará se xml-sensedia não excede a quantidade máxima de caracteres. Nesse caso, xml-sensedia tem 12 caracteres.

Campo: Structure Limits

Node depth

Especifica a profundidade máxima permitida no 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>

Nesse exemplo, o xml tem a profundidade igual a 4.

Attribute count per element

Especifica a quantidade de atributos por elemento em um documento XML.

<Customer CustomerID="3" CustomerID_web="s3ko05456sdsl">

O exemplo acima, o elemento tem dois atributos: customerID e CustomerID_web.

Namespace count per element

Especifica a quantidade de namespaces por elemento em um documento XML.

<sensedia:gateway xmlns:sensedia="http://sensedia.com" xmlns:manager="http:sensedia.com/api-manager"
             manager:sensedia="sensedia">

Nesse exemplo, há três namespaces: xmlns:sensedia, xmlns:manager e manager:sensedia.

Child count

Especifica a quantidade de filhos de qualquer elemento em um 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>

Neste exemplo, o elemento Customer tem cinco filhos: CompanyName, ContactName, ContactTitle, Phone e FullAddress

Field: Value Limits

Text

Especifica a quantidade máxima de caracteres do valor de qualquer elemento.

<ContactTitle>Marketing Manager</ContactTitle>

Nesse exemplo, o valor Marketing Manager tem 17 caracteres.

Attribute

Especifica a quantidade máxima de caracteres do valor de qualquer atributo.

<Customer CustomerID="6s695dp84">

No exemplo acima, o valor 6s695dp84 do atributo CustomerID tem nove caracteres.

Namespace URI

Especifica a quantidade máxima de caracteres do valor de qualquer namespace.

 <sensedia:gateway xmlns:sensedia="http://sensedia.com">

Nesse exemplo, http://sensedia.com tem 19 caracteres.

Comment

Especifica a quantidade máxima de caracteres do valor de qualquer comentário.

<!--comment-->

No exemplo acima, o comentário tem sete caracteres.

Processing Instruction Data

Especifica a quantidade máxima de caracteres do valor de qualquer processing instruction data.

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

No exemplo acima, utf-8 em cinco caracteres e 1.0 tem dois caracteres.

Erros

Here are the errors that can be returned when the interceptor finds any irregularity regarding the specifications above.

Erro Cód. HTTP Requisição Cód. HTTP Resposta

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
How useful was this article to you?