¿Riesgos de seguridad por usar mailto :?

3

Uso un script PHP que realiza una búsqueda en la base de datos y cuando no se encuentran resultados, al usuario se le presenta un enlace de correo electrónico con este formato

mailto:[email protected]?subject=SEARCHED_QUERY_HERE

El SEARCHED_QUERY_HERE se reemplaza con el equipo de búsqueda que el usuario buscó, el cual no arrojó ningún resultado. ¿Puede alguien explotarlo? (yo codifico SEARCHED_QUERY_HERE )

    
pregunta MoneyGiver 06.06.2015 - 14:25
fuente

3 respuestas

3

Se podría abusar de esto para la inyección de HTML. Imagínese si un usuario buscara el término

waterfall</a><a href="http://maliciouslink.com">Click Here

El </a> en el término de búsqueda terminaría el enlace mailto, y luego insertaría un segundo enlace con las palabras "Haga clic aquí".

La codificación de URL, por supuesto, mitigará este problema.

Además, asegúrese de validar la consulta de búsqueda antes de la consulta de la base de datos, ya que, de lo contrario, podría ser objeto de abuso de una manera similar para la inyección de SQL.

    
respondido por el Kevin Keane 06.06.2015 - 20:37
fuente
3

Debe codificar en URL SEARCHED_QUERY_HERE ; de lo contrario, si un usuario busca &body=something , el cuerpo del mensaje de correo electrónico se configurará en something . Además, si no lo codifica con URL, si el usuario busca un %20 (o similar) literal, aparecerá como un espacio en el mensaje.

Sin embargo, esto no es un riesgo de seguridad.

El otro riesgo obvio es que si no codifica correctamente el SEARCHED_QUERY_HERE en HTML, esto llevará a XSS. Pero parece que ya lo estás haciendo, así que estás cubierto.

Algunos lenguajes de programación, como PHP, requieren que especifique explícitamente que las comillas también deben estar codificadas, así que asegúrese de pasar los argumentos correctos a su función de codificación HTML.

Ejemplo (PHP)

echo '<a href="mailto:[email protected]?subject='.htmlspecialchars(rawurlencode(SEARCHED_QUERY_HERE), ENT_QUOTES, 'utf-8') .'>Link</a>';
    
respondido por el user2428118 06.06.2015 - 16:47
fuente
0

No lo creo, pero la mayor preocupación es que está permitiendo que los usuarios modifiquen la página devuelta. Asegúrese de que está utilizando una buena API para validar la entrada del usuario (ya que se utiliza para generar la consulta) y de que está protegiendo adecuadamente la salida en esta página. Use ESAPI de OWASP si es posible.

    
respondido por el Tara Hodges 06.06.2015 - 16:37
fuente

Lea otras preguntas en las etiquetas