regex de validação de nome de usuário @preg_match permite> e <apesar desses caracteres não estarem na lista de permissões
Eu tenho esse regex relativamente simples para nomes de usuário
// Enforce that username has to be 3-100 characters, alphanumeric, and first character a letter.
// Possibility without begin/end characters and i: [a-z][a-z0-9@.+-_]{2,100}
// Allow for simple email usernames in the future...
return !!preg_match('#^[a-zA-Z][a-zA-Z0-9@.+-_]{2,100}$#', trim($username));
O que, infelizmente, permite essas sequências de teste prontas para XSS:
'angle<bracket',
'angle>bracket',
'html<script>inside',
E eu não tenho idéia do porquê, já que eles já devem ser explicitamente proibidos pelo rege
qui está um caso de teste em execuçã
Alguém sabe por que os colchetes angulares estão sendo permitidos por uma regex que não os permite explicitamente? Devo escapar de um desses caracteres (. + -) como literais?