¿Qué caracteres especiales son seguros para usar en url?

13

¿Qué caracteres especiales son seguros para usar en url?


fuente
2
Sería mucho más rápido y fácil preguntar qué caracteres especiales no son seguros para usar en una URL (según la respuesta de Andreas Bonini a continuación).
Mark Hatton
2
Preguntar qué es inseguro es tan difícil de responder: cualquier carácter no ascii debe estar codificado en porcentaje.
neo
2
@neo: no, no lo hace: O
Thomas Bonini

Respuestas:

10

Los caracteres seguros son az, AZ, 0-9 y _ - (subrayado y menos), que además de los caracteres reservados que se utilizan para los parámetros.

Otros personajes darán problemas en algún grado. ejemplo: si un parámetro es una matriz, ?param=array[content]es decir, mostrará una url con los corchetes codificados por la url, que parecen feos e imposibles de dictar.

Pero el problema no es solo que es feo, digamos que tienes un jpg con un personaje al lado de los más seguros, muchas veces el navegador no podrá descargarlo obteniendo un 404. Este es un problema de navegadores más antiguos y algunos navegadores móviles.

¿Cómo probar esto?

  • Ponga un montón de imágenes / js / css con los caracteres que desea probar en los nombres en una página pública con muchos visitantes
  • Haga que la página 404 le envíe un correo electrónico cada vez que reciba un golpe

Tengo una bandeja de entrada con 14000 correos electrónicos que prueban mi punto.

El desintegrador
fuente
55
bueno, en lugar de "caracteres seguros", diría "caracteres extremadamente seguros": la especificación permite más, pero estoy de acuerdo con usted en que es mejor ser conservador aquí.
Jeff Atwood
2
¿Qué hay de malo con el período?
BlueWhale
11

Los siguientes caracteres tienen un significado especial en el componente de ruta de su URL (el componente de ruta es todo antes del '?'):

  ";" | "/" | "?"

Además de esos, los siguientes caracteres tienen un significado especial en la parte de consulta de su URL (todo después de '?'). Por lo tanto, si están detrás del '?' necesitas escapar de ellos:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Para una explicación más detallada, vea el RFC .

Thomas Bonini
fuente
3
Por supuesto, solo por claridad, esta respuesta es lo opuesto a la pregunta. La pregunta pregunta qué personajes son seguros, no aquellos que no son seguros. Dado que es difícil responder la pregunta original de manera sólida, la pregunta probablemente debería editarse para hacerla al revés y hacer coincidir esta respuesta.
Mark Hatton
3

Las respuestas aquí son buenas, pero hay una excepción más que creo que vale la pena mencionar: los caracteres que no están en inglés. Haciendo referencia a esta pregunta de SF aquí , los caracteres como ñ (como en español) son perfectamente legítimos, SI se han codificado en su DNS correctamente.

Debe usar Punycode dentro de su DNS para que se resuelvan en los navegadores modernos (la entrada para español es xn--espaol-zwa), pero ahora son perfectamente seguros de usar en los nombres de dominio, ya que también son fáciles de escribir para quienes no hablan inglés. .

Mark Henderson
fuente