En general, hay esquemas de URL válidos que son peligrosos. Lo más obvio es que javascript:
, que como pseudo-URL no se refiere a una nueva ubicación, sino a un comando para ejecutar en la página actual. Si se agrega una URL javascript:
a su página, significa que tiene un problema de scripts entre sitios.
También hay otros alias de scripting ( vbscript:
, mocha:
et al), así como data:
y cualquier número de manejadores de protocolo arbitrarios que el software de terceros pueda haber instalado en el cliente. Por lo general, es necesario incluir en la lista blanca los esquemas de URL.
El URLValidator predeterminado de Django para URLField hace esto, permitiendo solo los enlaces http, https, ftp y ftps, por lo que siempre que no haya reemplazado los validadores, debería estar bien. (Es posible que desee hacerlo, si ese no es el conjunto de esquemas que desea). Si tiene otros medios para rellenar el campo some_url
que no pasa por el validador / campo normal, deberá hacer Seguro que también está validado.
(Lo que viene a la mente es incluir una cita en la URL y luego un código HTML arbitrario).
Siempre y cuando no hayas deshabilitado autoescape
, el escape de HTML predeterminado que proporciona {{...}}
templating lo impide (codifica correctamente las comillas simples a '
).