Protección basada en gramática SQL para cargas útiles HTML y JSON
El Web App Firewall de NetScaler utiliza un enfoque de coincidencia de patrones para detectar los ataques de inyección de SQL HTTP
y JSON
las cargas útiles. El enfoque utiliza un conjunto de palabras clave predefinidas y (o) caracteres especiales para detectar un ataque y marcarlo como una infracción. Aunque este enfoque es efectivo, puede dar lugar a muchos falsos positivos que dan lugar a agregar una o más reglas de relajación. Especialmente cuando se utilizan palabras de uso común como “Seleccionar” y “De” en una solicitud HTTP o JSON. Podemos reducir los falsos positivos implementando la comprobación de protección gramatical SQL HTML
y la JSON
carga útil.
En el enfoque de coincidencia de patrones existente, se identifica un ataque de inyección SQL si hay una palabra clave predefinida y/o un carácter especial en una solicitud HTTP. En este caso, la instrucción no tiene por qué ser una sentencia SQL válida. Pero en el enfoque basado en gramática, un ataque de inyección SQL solo se detecta si una palabra clave o un carácter especial están presentes en una instrucción SQL o forma parte de una sentencia SQL, lo que reduce los casos falsos positivos.
Caso de uso de protección basada en gramática SQL
Considere una declaración, “Seleccione mis entradas y veámonos en union station” presente en una solicitud HTTP. Aunque la instrucción no es una sentencia SQL válida, el enfoque de coincidencia de patrones existente detecta la solicitud como un ataque de inyección SQL porque la instrucción utiliza palabras clave como “Seleccionar”, “y” y “Unión”. Sin embargo, en el caso del enfoque gramatical SQL, la instrucción no se detecta como un ataque de infracción porque las palabras clave no están presentes en una sentencia SQL válida o no forman parte de una sentencia SQL válida.
El enfoque basado en gramática también se puede configurar para detectar ataques de inyección SQL en JSON
cargas útiles. Para agregar una regla de relajación, puede reutilizar las reglas de relajación existentes. Las reglas de relajación detalladas también se aplican a la gramática SQL, a las reglas con “palabra clave” “ValueType”. En la gramática JSON
SQL, se puede reutilizar el método basado en URL existente.
Configurar la protección basada en gramática de SQL para HTML mediante la CLI
Para implementar la detección basada en gramática SQL, debe configurar el parámetro “SQLjectionGrammar” en el perfil de Web App Firewall. De forma predeterminada, el parámetro está desactivado. Se admiten todas las acciones de inyección SQL existentes excepto el aprendizaje. Cualquier nuevo perfil creado después de una actualización admite la gramática de inyección SQL y sigue teniendo el tipo predeterminado como “carácter especial o palabra clave” y debe habilitarse explícitamente.
En la línea de comandos, escriba:
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->
Ejemplo:
add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON
Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para HTML mediante la CLI
Si ha habilitado enfoques gramaticales y de coincidencia de patrones, el dispositivo realiza primero la detección basada en gramática y, si hay detección de inyección SQL con el tipo de acción establecido para bloquear, la solicitud se bloquea (sin verificar la detección mediante la coincidencia de patrones).
En la línea de comandos, escriba:
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->
Ejemplo:
add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar
Configure la comprobación de inyección de SQL solo con la protección basada en gramática para HTML mediante la CLI
En la línea de comandos, escriba:
add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->
Ejemplo:
add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None
Reglas de relajación de enlaces para la protección basada en gramática de SQL para HTML mediante la CLI
Si su aplicación requiere que SQL
omita la comprobación de inyección de un “ELEMENTO” o “ATRIBUTO” específico en la carga útil, debe configurar una regla de relajación.
Nota:
Las reglas de relajación con la “palabra clave” de ValueType se evalúan solo cuando el dispositivo realiza la detección mediante
SQL
gramática.
Las reglas de relajación de la inspección por inyección del comando SQL
tienen la siguiente sintaxis. En la línea de comandos, escriba:
bind appfw profile <name> -SQLInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->
Ejemplo:
bind appfw profile p1 -sqlinjection abc http://10.10.10.10/
bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX
bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX
Configurar la protección basada en gramática de SQL para HTML mediante la GUI
Complete el procedimiento GUI para configurar la detección de inyección HTML SQL basada en gramática.
- En el panel de navegación, vaya a Seguridad > Perfiles.
- En la página Perfiles, haga clic en Agregar.
- En la página de perfil de NetScaler Web App Firewall, haga clic en Comprobaciones de seguridad en Configuración avanzada.
- En la sección Comprobaciones de seguridad, vaya a Configuración de inyección HTML SQL.
- Haga clic en el icono ejecutable situado cerca de la casilla de verificación.
- Haga clic en Configuración de acción para acceder a la página Configuración de inyección SQL de HMTL.
- Active la casilla Comprobar mediante gramática SQL.
- Haga clic en Aceptar.
Configure la protección basada en gramática de SQL para la carga útil de JSON mediante la CLI
Para implementar la detección basada en gramática SQL para la carga útil JSON, debe configurar el parámetro “JSONSQLjectionGrammar” en el perfil de Web App Firewall. De forma predeterminada, el parámetro está desactivado. Se admiten todas las acciones de inyección SQL existentes excepto el aprendizaje. Cualquier nuevo perfil creado después de una actualización admite la gramática de inyección SQL y sigue teniendo el tipo predeterminado como “carácter especial o palabra clave” y debe habilitarlo explícitamente.
En la línea de comandos, escriba:
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->
Ejemplo:
add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON
Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para la carga útil de JSON mediante la CLI
Si ha habilitado comprobaciones gramaticales y de coincidencia de patrones, el dispositivo realiza primero la detección basada en gramática y, si hay detección de inyección SQL con el tipo de acción establecido para bloquear, la solicitud se bloquea (sin verificar la detección mediante coincidencia de patrones).
Nota:
Las reglas de relajación con la “palabra clave” de ValueType se evalúan solo cuando el dispositivo realiza la detección mediante gramática SQL.
En la línea de comandos, escriba:
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->
Ejemplo:
add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar
Configure la inyección de SQL: compruebe solo la protección basada en gramática para la carga útil de JSON mediante la CLI
En la línea de comandos, escriba:
add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\
<!--NeedCopy-->
Ejemplo:
add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None
Vincular reglas de relajación basadas en URL para la protección basada en gramática de JSON SQL para la carga útil de JSON mediante la CLI
Si su aplicación requiere que omita la inspección de inyección de JSON
comandos para un “ELEMENTO” o “ATRIBUTO” específico en la carga útil, puede configurar una regla de relajación.
Las reglas de relajación de inspección e inyección del comando JSON
tienen la siguiente sintaxis. En la línea de comandos, escriba:
bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->
Ejemplo:
bind appfw profile p1 -sqlinjection abc http://10.10.10.10/
bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX
bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX
Configure la protección basada en gramática de SQL para la carga útil de JSON mediante la GUI
Complete el procedimiento GUI para configurar la detección de inyección JSON SQL basada en gramática.
- En el panel de navegación, vaya a Seguridad > Perfiles.
- En la página Perfiles, haga clic en Agregar.
- En la página de perfil de NetScaler Web App Firewall, haga clic en Comprobaciones de seguridad en Configuración avanzada.
- En la sección Comprobaciones de seguridad, vaya a la configuración de inyección JSON SQL.
- Haga clic en el icono ejecutable situado cerca de la casilla de verificación.
- Haga clic en Configuración de acción para acceder a la página Configuración de inyección JSON SQL.
- Active la casilla Comprobar mediante gramática SQL.
- Haga clic en Aceptar.
En este artículo
- Caso de uso de protección basada en gramática SQL
- Configurar la protección basada en gramática de SQL para HTML mediante la CLI
- Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para HTML mediante la CLI
- Configure la comprobación de inyección de SQL solo con la protección basada en gramática para HTML mediante la CLI
- Reglas de relajación de enlaces para la protección basada en gramática de SQL para HTML mediante la CLI
- Configurar la protección basada en gramática de SQL para HTML mediante la GUI
- Configure la protección basada en gramática de SQL para la carga útil de JSON mediante la CLI
- Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para la carga útil de JSON mediante la CLI
- Configure la inyección de SQL: compruebe solo la protección basada en gramática para la carga útil de JSON mediante la CLI
- Vincular reglas de relajación basadas en URL para la protección basada en gramática de JSON SQL para la carga útil de JSON mediante la CLI
- Configure la protección basada en gramática de SQL para la carga útil de JSON mediante la GUI