Sto utilizzando UTF-8 per un nuovo sito Web, quindi posso eseguire l'internazionalizzazione su pagine diverse, ad esempio in greco (ελληνικά). Tuttavia, ho fatto una domanda qui in precedenza sui possibili bug di sicurezza che questo potrebbe portare e alcuni citati per esempio: "admin" (alfabeto inglese) e "аdmin" (cirillico "a") hanno assolutamente lo stesso, ma hanno codici di caratteri diversi e qualcuno potrebbe registrare un altro account chiamato "аdmin".
Mi chiedo quale sia il modo migliore per filtrare completamente i caratteri dell'alfabeto non inglese. Nella pagina delle informazioni sull'account ho un campo per cambiare il nome utente (ad esempio, in realtà non lo faccio), come farei per rimuoverli? Devo aggiungere una funzione di controllo con espressioni regolari o qualcosa del genere?
function changeUsername($newUsername)
{
if($this->isValidCharacters($newUsername) !== 1) {
send message saying invalid characters
}
continue changin username
}
e in tal caso, come sarebbe la regex, consentendo comunque tutti i simboli tranne Niente caratteri Unicode o altri caratteri alfabetici.
O c'è un modo ancora più semplice per bloccare tutti gli input provenienti dall'essere UTF-8? Ad esempio, cambiando il set di caratteri predefinito in php.ini torna al valore predefinito e semplicemente inviando un'intestazione che modifica il set di caratteri quando eseguo l'output in un'altra lingua? E se mandano input con un altro alfabeto e il mio server non ha il set di caratteri utf-8 su come il mio server lo interpreta? Devo ancora fare controlli?
(Come ho detto nel mio altro post, non ho idea di cosa sto facendo quando si tratta di set di caratteri).