Skip to content

Latest commit

 

History

History
80 lines (52 loc) · 7.26 KB

File metadata and controls

80 lines (52 loc) · 7.26 KB

9.2 Filtrar entradas

Filtrar los datos de usuario es una seguridad de las aplicaciones Web. Es para verificar la legitimidad de los datos del proceso. A través de todos los datos de entrada se filtra para evitar que los datos maliciosos en el programa para ser creencia equivocada o mal uso. La mayoría de las vulnerabilidades de las aplicaciones Web, ya que no hay datos de entrada de los usuarios para la filtración adecuada causados.

Introducimos el filtrado de datos se divide en tres pasos:

  1. los datos de identificación, los datos tienen que ser filtrados de averiguar de donde
  2. los datos de filtrado, tenemos que averiguar qué tipo de datos
  3. la distinción entre los datos filtrados y contaminados, así que si hay datos de ataque de aseguramiento después de la filtración nos permite utilizar una de datos más segura

Identificar los datos

"Datos de identificación", como un primer paso, ya que no sabe "que datos son, y de dónde viene," la premisa de que usted sería incapaz de filtrar adecuadamente. Los datos aquí se proporciona internamente todo a partir de datos no son de código. Por ejemplo: todos los datos del cliente, pero el cliente no es la única fuente de datos externa, un conjunto de datos de la interfaz de base de datos proporcionados por terceros, también ser una fuente de datos externa.

Los datos introducidos por el usuario es muy fácil de reconocer que vaya, vaya a través de la r.ParseForm tras el POST y GET usuario todos los datos en la r.Form interior. Otro de entrada es mucho más difícil de identificar, por ejemplo, r.Header Muchos de los elementos son manipulados por el cliente. A menudo es difícil identificar cuáles de estos elementos de la entrada, por lo que la mejor manera es poner dentro de todos los datos como una entrada del usuario. (Ex r.Header.Get ("Accept-Charset") Esto también es visto como la entrada del usuario, aunque éstas mayoría de los navegadores manipulación)

Filtrar datos

Las fuentes de datos en el saber, puede filtrarlo. El filtrado es un punto de vista formal bits, se expresa en tiempos de paz hay muchos sinónimos, como la validación, limpieza y descontaminación. A pesar del aparente significado de estos términos son diferentes, pero todos ellos se refieren al mismo tratamiento: para evitar que los datos ilegales en su aplicación.

Hay muchas maneras de filtrar los datos, algunos de los cuales son menos seguros. La mejor manera es comprobar el filtro como un proceso, usted tiene que comprobar antes de utilizar los datos para ver si cumplen con los requisitos legales de los datos. Y no se trata de corregir los datos ilegales con amabilidad, y dejar que el usuario presiona las reglas para introducir datos. La historia ha demostrado que el intento de corregir los datos no válidos a menudo conducen a problemas de seguridad. Aquí un ejemplo: "La reciente construcción del sistema bancario después de la actualización, si la contraseña detrás de los dos es 0, basta con introducir los cuatro delantero puede entrar en el sistema", que es un defecto muy grave.

Filtrado de datos utilizando los siguientes varias bibliotecas importantes para operar:

  • Strconv empaqueta la siguiente cadena en la función de correlación, porque la r.Form Request devuelve un string y, a veces tenemos que convertir a un integer/floating, Atoi , ParseBool, ParseFloat,ParseInt otras función puede ser útil.
  • en el paquete String Éstos son algunos función Trim, ToLower, ToTitle , entre otras funciones, puede ayudar a que nos permite obtener información de acuerdo con el formato especificado.
  • Regexp package para manejar algunas de las necesidades complejas, tales como la determinación de si la entrada es de correo electrónico, cumpleaños y similares

Filtrado de datos, además de la comprobación de autenticación, en particular, también puede utilizar la lista blanca. Suponiendo que usted está comprobando los datos es ilegal, a menos que pueda demostrar que es legítimo. Usando este método, si se produce un error, será sólo conducen a los datos legítimos, ya que es ilegal, y no al revés, aunque no queremos cometer errores, pero es mejor que los datos ilegales como datos legítimos mucho más asegurar.

Distinguish filter data

Si usted ha completado los pasos anteriores, el trabajo de filtrado de datos es básicamente completado, pero al escribir aplicaciones web, también tenemos que distinguir entre los datos filtrados y contaminados, ya que puede garantizar la integridad de filtrado de datos sin afectar a los datos de entrada. Nos pusimos de acuerdo para poner todos los datos filtrados en una variable llamada Map (CleanMap). Luego, dos pasos importantes que se necesitan para prevenir la contaminación de la inyección de datos:

  • Cada solicitud debe ser inicializado CleanMap un mapa vacío.
  • Úne la inspección y evite que una variable a partir de un origen de datos externo denominado CleanMap.

A continuación, vamos a usar un ejemplo para reforzar estos conceptos, consulte el siguiente formulario

<form action="/whoami" method="POST">
	Who am I:
	<select name="name">
		<option value="astaxie">astaxie</option>
		<option value="herry">herry</option>
		<option value="marry">marry</option>
	</select>
	<input type="submit" />
</form>

Al tratar con este tipo de lógica de programación, muy fácil caer en el error de que sólo se puede presentar en una de tres opciones. De hecho, un atacante puede simular la operación POST, name = attack presentación de dichos datos, por lo que en este momento tenemos que hacer un acuerdo similar con la lista blanca

r.ParseForm()
name := r.Form.Get("name")
CleanMap := make(map[string]interface{}, 0)
if name == "astaxie" || name == "herry" || name == "marry" {
	CleanMap["name"] = name
}

El código anterior inicializamos un CleanMap nombre de la variable se obtiene cuando se juzga astaxie , herry , se unean después de que uno de los tres almacenamos los datos en el CleanMap, por lo que puede asegurarse de CleanMap ["name"] datos es legítimo, y por lo tanto la resto del código de usarlo. Por supuesto, también podemos aumentar la parte else de procesamiento de datos ilegal, posibilidad es que el formulario se muestra de nuevo con un error. Pero no se trata de ser amable y datos de salida sean contaminados.

El método anterior para filtrar un conjunto de datos de valor legítimo conocido es muy eficaz, pero hay un grupo conocido por el filtrado de datos que constan de caracteres legales cuando no lo ayudó. Por ejemplo, es posible que tenga un nombre de usuario sólo puede contener letras y números:

r.ParseForm()
username := r.Form.Get("username")
CleanMap := make(map[string]interface{}, 0)
if ok, _ := regexp.MatchString("^[a-zA-Z0-9].$", username); ok {
	CleanMap["username"] = username
}

Resumen

Ataques XSS Filtrado de datos en la seguridad Web juega un papel fundamental en la mayoría de los problemas de seguridad son el resultado de filtrar los datos y la validación de datos causada por, por ejemplo, se presentó la sección frontal de los ataques CSRF, y el siguiente, SQL inyección y lo que no hay motivo grave de filtrado de datos, por lo que necesitan una atención especial a esta parte de los contenidos.

Links