un poco de PHP/MySQL novato aquí ...PHP/MySQL - Los caracteres seguros para mostrar los nombres/nombres de usuario/contraseñas, con DOP
He estado construyendo un sitio basado en PHP que utiliza una base de datos MySQL para almacenar información del usuario, como sus nombres para mostrar, nombres de usuario y contraseñas.
He estado aprendiendo acerca del escape, declaraciones preparadas y similares, y cómo evitar inyecciones SQL como "bobby"); drop table users-- ".
Estoy usando sentencias preparadas de PDO para obtener la entrada del usuario de formularios, con el fin de registrarlos en la base de datos. Sin embargo, necesito saber algunas cosas:
Desde que estoy usando comandos preparados, para los nombres de pantalla, nombres de usuario, contraseñas, etc, está bien para mí permitir caracteres especiales como @, #, $, o incluso 'solo' o 'doble' cotizaciones? ¿Y qué hay de espacios, caracteres internacionales, caracteres con acentos o cosas como ♥ ? Y cuando pregunto si está "bien" permitir estos caracteres, estoy preguntándome si existen otros riesgos de seguridad que puedan surgir de permitir comillas o paréntesis en los nombres de usuario de las personas, o cosas como etiquetas html para negrita o cursiva?
Si está bien para permitir más caracteres especiales, pero no algunos: son Hay caracteres específicos "peligrosos" (en el ámbito de MySQL) la que tienen una necesidad imperiosa de hacer ilegal? (Me siento como cotizaciones puede encajar esta agenda, pero yo estoy haciendo señales mixtas en eso.)
Si tuviera que permitir a los personajes fuera de la típica "alfanumérica y subrayado" rango, ¿hay trampas I puede experimentar más tarde (en MySQL, SQL o PHP) al permitir caracteres extraños? ¿Necesitaré de alguna manera hacer que las etiquetas html aparezcan como cadenas, en lugar de las etiquetas reales , al mostrar los nombres de usuario de las personas? ¿O tendría que escapar de las citas en los nombres de usuario de las personas cada vez que quisiera consultarlas? ¿O nada de esto importa ya que usaré las declaraciones preparadas con PDO?
Haz conjuntos de caracteres UTF-8 o como utf16 vienen en cualquier lugar, en lo que es por lo que puede aceptar la más amplia gama de nombres de visualización y nombres de usuario, mientras que todavía asegurándose de esos alfabetos se pueden representar en mi sitio web?
Sé que hay algunas letras cirílicas que parecen idénticas a en inglés. Solía copiar estos directamente de MS Word y usar en mis nombres de usuario. Me doy cuenta de que estos pueden usarse para imitar a otros miembros perceptualmente, simplemente cambiando una "a" por una "a" cirílica. Los nombres de usuario con ♥ en ellos pueden ser difíciles para buscar si alguien no está bien versado en alt-code. ¿Debería ser esto una preocupación? ¿Qué opinas de esto?
Gracias de antemano a quien pueda darme una idea de esto.
Por favor, limite sus publicaciones a una sola pregunta a la vez –