

**Presentamos una nueva experiencia de consola para AWS WAF**

Ahora puede usar la experiencia actualizada para acceder a las AWS WAF funciones desde cualquier parte de la consola. Para obtener más información, consulte [Trabajar con la consola](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de enunciados de reglas lógicas en AWS WAF
<a name="waf-rule-statements-logical"></a>

En esta sección, se explica qué es una instrucción de regla lógica y cómo funciona.

Las instrucciones de reglas lógicas le permiten combinar otras instrucciones o negar sus resultados. Cada instrucción de regla lógica necesita al menos una instrucción anidada.

Para combinar los resultados de las instrucciones de reglas, anide las instrucciones en instrucciones de reglas lógicas. 

Las instrucciones de reglas lógicas se pueden anidar. Puede anidarlas dentro de otras sentencias de reglas lógicas y utilizarlas en sentencias de ámbito reducido. Para obtener información sobre las instrucciones de restricción de acceso, consulte [Uso de declaraciones de alcance reducido en AWS WAF](waf-rule-scope-down-statements.md).

**nota**  
El editor visual de la consola admite un nivel de anidamiento de instrucciones de reglas, que funciona para muchas necesidades. Para anidar más niveles, edite la representación JSON de la regla en la consola o utilice la APIs. 

Esta tabla describe las instrucciones de regla lógica y proporciona pautas para calcular el uso de unidades de capacidad del paquete de protección (ACL web) (WCU) para cada una. Para obtener información sobre WCUs, consulte[Unidades de capacidad de ACL web (WCUs) en AWS WAF](aws-waf-capacity-units.md). 


| Instrucción lógica  | Description (Descripción) | WCUs | 
| --- | --- | --- | 
| [Lógica de AND](waf-rule-statement-type-and.md) | Combina instrucciones anidadas con lógica AND. | Se basa en instrucciones anidadas | 
|  [Lógica de NOT](waf-rule-statement-type-not.md)  |  Niega los resultados de una instrucción anidada.  |  Se basa en una instrucción anidada  | 
| [Lógica de OR](waf-rule-statement-type-or.md) | Combina instrucciones anidadas con lógica OR. | Se basa en instrucciones anidadas | 

# Instrucción de reglas de AND
<a name="waf-rule-statement-type-and"></a>

La instrucción de regla AND combina instrucciones anidadas con una operación AND lógica, por lo que todas las instrucciones anidadas deben coincidir para que la instrucción AND coincida. Requiere al menos dos instrucciones anidadas. 

## Características de la instrucción de reglas
<a name="and-rule-statement-characteristics"></a>

**Se puede anidar**: puede anidar este tipo de instrucción. 

**WCUs**— Depende de las declaraciones anidadas.

## Dónde encontrar esta instrucción de regla
<a name="and-rule-statement-where-to-find"></a>
+ **Generador de reglas** en la consola: en **Si una solicitud**, elija **coincide con todas las instrucciones (AND)** y, a continuación, rellene las instrucciones anidadas. 
+ **API**: [AndStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AndStatement.html)

## Ejemplos
<a name="and-rule-statement-examples"></a>

La siguiente lista muestra el uso de AND y las instrucciones de regla lógica NOT para eliminar los falsos positivos de las coincidencias de una instrucción de ataque de inyección de código SQL. En este ejemplo, supongamos que podemos escribir una instrucción de coincidencia de un solo byte para que coincida con las solicitudes que generan falsos positivos. 

La instrucción AND coincide con las solicitudes que no coinciden con la instrucción de coincidencia de bytes y que sí coinciden con la instrucción de ataque de inyección de código SQL. 

```
{
      "Name": "SQLiExcludeFalsePositives",
      "Priority": 0,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "NotStatement": {
                "Statement": {
                  "ByteMatchStatement": {
                    "SearchString": "string identifying a false positive",
                    "FieldToMatch": {
                      "Body": {
                        "OversizeHandling": "MATCH"
                      }
                    },
                    "TextTransformations": [
                      {
                        "Priority": 0,
                        "Type": "NONE"
                      }
                    ],
                    "PositionalConstraint": "CONTAINS"
                  }
                }
              }
            },
            {
              "SqliMatchStatement": {
                "FieldToMatch": {
                  "Body": {
                    "OversizeHandling": "MATCH"
                  }
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "SQLiExcludeFalsePositives"
      }
    }
```

Con el editor visual de reglas de la consola, puede anidar una instrucción no lógica o una instrucción NOT en una instrucción OR o AND. La anidación de la instrucción NOT se muestra en el ejemplo anterior. 

Con el editor visual de reglas de la consola, puede anidar la mayoría de las instrucciones anidables en una instrucción de regla lógica, como la que se muestra en el ejemplo anterior. No puede usar el editor visual para anidar instrucciones OR o AND. Para configurar este tipo de anidación, debe proporcionar la instrucción de la regla en JSON. Por ejemplo, la siguiente lista de reglas JSON incluye una instrucción OR anidada dentro de una instrucción AND. 

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# Instrucción de reglas de NOT
<a name="waf-rule-statement-type-not"></a>

La instrucción de regla NOT niega lógicamente los resultados de una sola instrucción anidada, por lo que las instrucciones anidadas no deben coincidir para que la instrucción NOT coincida y viceversa. Requiere una instrucción anidada. 

Por ejemplo, si desea bloquear las solicitudes que no provienen de un país específico, cree una instrucción NOT con la acción establecida en bloquear y anide una instrucción de coincidencia geográfica que especifique el país. 

## Características de la instrucción de reglas
<a name="not-rule-statement-characteristics"></a>

**Se puede anidar**: puede anidar este tipo de instrucción. 

**WCUs**— Depende de la declaración anidada.

## Dónde encontrar esta instrucción de regla
<a name="not-rule-statement-where-to-find"></a>
+ **Generador de reglas** en la consola: en **Si una solicitud**, elija **no coincide con la instrucción (NOT)** y, a continuación, rellene las instrucciones anidadas.
+ **API**: [NotStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_NotStatement.html)

# Instrucción de reglas de OR
<a name="waf-rule-statement-type-or"></a>

La instrucción de regla OR combina instrucciones anidadas con lógica OR, por lo que una de las instrucciones anidadas debe coincidir para que la instrucción OR coincida. Requiere al menos dos instrucciones anidadas. 

Por ejemplo, si desea bloquear las solicitudes procedentes de un país específico o que contengan una cadena de consulta específica, puede crear una instrucción OR y anidar en ella una instrucción de coincidencia geográfica para el país y una instrucción de coincidencia de cadena para la cadena de consulta. 

Si, como alternativa, desea bloquear las solicitudes que *no* provienen de un país específico o que contengan una cadena de consulta específica, modifique la instrucción OR anterior para anidar la instrucción de coincidencia geográfica en un nivel inferior, dentro de una instrucción NOT. Este nivel de anidamiento requiere que utilice el formato JSON, ya que la consola solo admite un nivel de anidamiento.

## Características de la instrucción de reglas
<a name="or-rule-statement-characteristics"></a>

**Se puede anidar**: puede anidar este tipo de instrucción. 

**WCUs**— Depende de las declaraciones anidadas.

## Dónde encontrar esta instrucción de regla
<a name="or-rule-statement-where-to-find"></a>
+ **Generador de reglas** en la consola: en **Si una solicitud**, elija **coincide con al menos una de las instrucciones (OR)** y, a continuación, rellene las instrucciones anidadas. 
+ **API**: [OrStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_OrStatement.html)

**Ejemplos**  
La siguiente lista muestra el uso de OR para combinar otras dos instrucciones. La instrucción OR coincide si alguna de las instrucciones anidadas coincide. 

```
{
  "Name": "neitherOfTwo",
  "Priority": 1,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "neitherOfTwo"
  },
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "GeoMatchStatement": {
            "CountryCodes": [
              "CA"
            ]
          }
        },
        {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777"
          }
        }
      ]
    }
  }
}
```

Con el editor visual de reglas de la consola, puede anidar la mayoría de las instrucciones anidables en una instrucción de regla lógica, pero no puede utilizar el editor visual para anidar instrucciones OR o AND. Para configurar este tipo de anidación, debe proporcionar la instrucción de la regla en JSON. Por ejemplo, la siguiente lista de reglas JSON incluye una instrucción OR anidada dentro de una instrucción AND. 

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```