Cambio seguro de enlaces de texto a anclajes HTML

1

Estoy intentando cambiar los enlaces de texto a anclajes reales. Entonces, por ejemplo, quiero cambiar de http://example.com a <a href="http://example.com">http://example.com</a> .

Dado que se trata de una cadena dada por el usuario, ¿debo tomar precauciones especiales para cosas como XSS (por ejemplo, eliminar todas las < y > ) o es algo que no debería preocuparme en esta situación? ¿Algo más que deba tener en cuenta al crear tal funcionalidad?

    
pregunta Andreas Arnold 23.02.2011 - 10:13
fuente

4 respuestas

6

Si solo está intentando convertir enlaces, la opción más segura es utilizar el saneamiento y una lista blanca. Básicamente, una lista de valores permitidos, que evita que se pase todo lo que no especifique. Siempre use una función de saneamiento de buena reputación y una lista blanca, no recomendaría crear la suya a menos que sepa lo que está haciendo. Consulte una página como la siguiente para referencia (asegúrese de que todo el saneamiento / validación esté ocurriendo en el lado del servidor, por supuesto):

enlace

Creo que la posibilidad de hacer que sus usuarios usen un lenguaje de marcado es una buena sugerencia para la etiqueta XSS inyectada, pero en realidad no aborda el problema del XSS concat'd URI.

La respuesta del respondedor anterior me parece esencialmente que solo debes prepararte para ataques simples porque, de lo contrario, "ir por el agujero del conejo" es imprudente e ingenuo. en ese caso?

    
respondido por el mrnap 23.02.2011 - 17:55
fuente
2

Trabajo de forma paralela para un paquete de foro de código abierto, y el código ha utilizado un algoritmo maravillosamente complicado para convertir las URL escritas en enlaces para los usuarios demasiado perezosos para usar las etiquetas BBCode.

Ha habido muchas correcciones de errores, y aún quedan más que unos pocos errores por solucionar, y la única conclusión a la que puedo llegar es no preocuparme por la conversión automática para los usuarios. Haga que utilicen el lenguaje de marcado que permita, incluso eso tendrá algunos problemas de seguridad, pero será mucho menos que intentar analizar automáticamente las URL en el texto.

    
respondido por el AnonJr 23.02.2011 - 15:22
fuente
1

¿Estás intentando prevenir ataques XSS contra el otro sitio? No se puede predecir cómo responderán otros sitios cuando un usuario haga clic en una URL, independientemente de si contiene secuencias de comandos obvias o incluso un marcado HTML. Por lo tanto, intentar extraer / desinfectar cosas que sabe que pueden ser peligrosas es solo seguridad por oscuridad.

Si decide continuar con esto (muchos sitios lo hacen, es parte de la naturaleza de la web proporcionar enlaces a otros sitios), entonces solo debe preocuparse por los ataques potencialmente dirigidos a su propio sitio, y simplemente asegurarse de que la URL está bien formada sería suficiente, pero eso no es una tarea trivial.

    
respondido por el symcbean 23.02.2011 - 14:13
fuente
-1

Valide solo que su propio sitio está protegido contra XSS (por HTMLEncode () u otro método antes de la visualización) ... no puede hacer mucho por los demás.

Dada la capacidad de los tipos de personas por correo para ofuscar la URL mediante HEX u otros métodos de codificación, estás persiguiendo un agujero de conejo intentando validar cualquier otra cosa que no sea un formato simple.

Consulte: enlace por muchas razones, no para tratar de analizar estos.

    
respondido por el iivel 23.02.2011 - 16:01
fuente

Lea otras preguntas en las etiquetas