Estoy usando UTF-8 para un nuevo sitio web, por lo que puedo hacer la internacionalización en diferentes páginas, por ejemplo en griego (ελληνικά). Sin embargo, hice una pregunta aquí antes acerca de posibles errores de seguridad que esto podría traer y algunas personas mencionadas, por ejemplo: "admin" (alfabeto inglés) y "аdmin" (cirílico "a") parecen absolutamente iguales, sin embargo tienen códigos de caracteres diferentes y alguien podría registrar otra cuenta llamada "аdmin".
Me pregunto cuál es la mejor manera de filtrar completamente los caracteres del alfabeto que no están en inglés. En la página de información de la cuenta tengo un campo para cambiar el nombre de usuario (por ejemplo, en realidad no), ¿cómo puedo eliminarlos? ¿Debo agregar una función de comprobación con expresiones regulares o algo así?
function changeUsername($newUsername)
{
if($this->isValidCharacters($newUsername) !== 1) {
send message saying invalid characters
}
continue changin username
}
y, de ser así, cómo se vería la expresión regular, aún permitiendo todos los símbolos pero NO hay caracteres Unicode ni otros caracteres del alfabeto.
¿O existe una forma aún más fácil de bloquear todas las entradas provenientes de UTF-8? Por ejemplo, cambiando el conjunto de caracteres predeterminado en php.ini de nuevo al predeterminado y simplemente enviando un encabezado cambiando el conjunto de caracteres cuando estoy emitiendo en otro idioma? Y si envían información con otro alfabeto y mi servidor no tiene el conjunto de caracteres utf-8, ¿cómo lo interpreta mi servidor? ¿Todavía necesito hacer cheques?
(Como dije en mi otra publicación, no tengo idea de lo que estoy haciendo cuando se trata de conjuntos de caracteres).