Parece menos comum em sites mais novos, mas muitos sites em que preciso de uma conta (como para pagar contas etc.) me impedem de criar uma senha com espaços. Isso só torna as coisas mais difíceis de lembrar , e eu não conheço nenhuma restrição de banco de dados ou programação sobre espaços em senhas, criptografadas ou (pelo contrário, se não for o caso). Por que, então, a barra de espaço é tão comumente discriminada quando se trata de se inscrever em um site?
16
"insert into USERS (..., password) values (..., '" + $POST['password'] + "');"
: -SRespostas:
Há uma enorme quantidade de estupidez quando se trata de senhas em sites.
(Limitando uma senha ao intervalo 0001 .. 9999, você pode simplesmente armazená-las como um número, texto sem formatação, no banco de dados)
(Ao fazer isso, o desenvolvedor ou o gerente presumiu que isso forçaria os usuários a escolher uma senha segura, enquanto a regra "Sua senha deve conter no mínimo 6 caracteres e conter pelo menos uma letra maiúscula, minúscula e uma dígito "falhará magicamente em fazê-lo)
ou,
ou,
Nos três casos, o desenvolvedor apenas garantiu que senhas como essa sejam armazenadas corretamente.
No primeiro caso, e se
é
será transformado%C3%A9
quando enviado? Ou, e se o banco de dados for armazenadoé
incorretamente?No segundo caso, e se o PHP (por que PHP?) Não puder lidar com unicode e fizer algo terrível ao receber uma senha como esta? E se o
<
personagem causar problemas? E se o&
caractere for interpretado como um separador em uma URL (supondo que, por algum motivo, a senha esteja sendo enviada por meio de GET em vez de POST)? E se'
for interpretado pelo banco de dados, porque, adivinhe, não temos idéia do que é a injeção de SQL e como evitá-la? Ou o que se'
transforma\'
?No terceiro caso, e se o PHP (de novo?) Apara o espaço em branco em alguns casos e não em outros? E se os administradores (que surpreendentemente têm acesso a senhas de usuários em texto sem formatação) forem perdidos porque veem apenas um espaço em branco, enquanto o usuário definiu três espaços em branco consecutivos ?
Nos três casos, essas ambiguidades são facilmente resolvidas por meio de testes , especialmente testes de unidade. Mas em uma enorme quantidade de projetos, não há nenhum teste e não há tempo para testar (mas ainda há muito tempo para depurar mais tarde).
Isso significa que, se o desenvolvedor tenta pensar nas possíveis consequências de permitir espaços , caracteres unicode ou qualquer caractere fora do ASCII 48..57 ∪ 65..90 ∪ 97..122 (dígitos, letras minúsculas, letras maiúsculas) , a maneira mais fácil, quando o teste não é possível, é apenas proibi-los .
Na minha opinião, esse é o único motivo para proibir espaços. Yannis Rizos deu outro motivo relacionado ao UX. Embora seja uma razão plausível na teoria, na prática não funciona: sites criados por pessoas que realmente se preocupam com o UX não corrigem regras estúpidas de senha. Em vez disso, os sites onde o espaço em branco é realmente proibido são em grande parte criados por pessoas que nunca ouviram falar do UX . Isso é especialmente verdadeiro, pois a proibição de qualquer caractere é realmente irritante do ponto de vista do UX, como qualquer restrição relacionada à senha, incluindo as úteis, como o número mínimo de caracteres.
fonte
A resposta é História
Parece que esquecemos que a base de tudo isso vem de uma época em que o armazenamento não era efetivamente livre (em disco ou na memória) quando nossa capacidade de gerenciar todas essas coisas era um pouco menor do que é agora e igualmente a capacidade dos sistemas automatizados tentar quebrar o mesmo também era um pouco menor.
Existem muitas reclamações sobre senhas baseadas no que sabemos agora e no que podemos fazer agora, mas o simples fato é que estamos lidando com uma combinação de pensamento e sistemas legados.
Agora deve haver restrições em novos sistemas ? Eu espero que não - muito menos razão agora
fonte
IMHO, é totalmente tolo qualquer site / aplicativo que use hash e / ou salga modernos para armazenar senhas e não permitir espaços nas senhas. Porém, alguns sistemas legados (leia sobre isso em algum lugar) ainda transmitem senhas em texto simples - portanto, não permitir espaços lá pode fazer sentido. Além disso, alguns aplicativos podem "retirar" todas as entradas de string que recebem. Portanto, uma senha que comece ou termine com um espaço não será boa (é claro, isso foi inventado em excesso, mas você pode imaginar o que não pode acontecer com quase qualquer pessoa inventando seu próprio site). Não há nada "ruim" em permitir espaços nas senhas - como você ressalta, os bancos de dados não desaprovam os hashes ou as versões de texto sem formatação.
Na verdade, a maioria dos meus amigos do Windows não sabe que podem usar espaços em suas senhas - então, talvez, de acordo com a resposta de Tim Medora, os proprietários de sites não desejem se arriscar com lamahs (desculpe) ou talvez alguns deles tenham equívocos e / ou ignoram as vantagens que os espaços podem oferecer.
fonte
What's the point then?
O ponto secundário é que a senha é de menos entropia conforme o usuário pretendeu. E alguns sistemas cortam os vars GET / POST por padrão, uma mudança (improvável) nesse comportamento levará a problemas mais sérios.Isso é feito pela mesma razão que muitos sites não permitem hífens, apóstrofos ou letras não ASCII nos nomes, mesmo que sejam práticas muito comuns, mesmo dentro dos EUA, e exija mais trabalho para desautorizar esses caracteres do que simplesmente permitir eles.
Isso também é feito pela mesma razão que os filtros de palavras de muitos sites não permitem que você use palavras como "arrogante", "retardador" ou mesmo "acumular" (embora muitas insultos raciais comuns estejam perfeitamente bem).
É porque muitos desenvolvedores aparentemente estão completamente sem senso comum, ou pelo menos têm uma imaginação muito limitada ao considerar possíveis entradas e cenários do usuário. Uma pequena porcentagem deles pode estar trabalhando com informações falsas (que excluir caracteres não alfanuméricos é de alguma forma uma prática padrão ou que o algoritmo de hash ou o método de armazenamento não pode manipular espaços ou caracteres especiais). Outros podem simplesmente ser preguiçosos - eles estão preocupados com problemas de conjunto de caracteres, então eles simplesmente restringem as entradas a um espaço mínimo de caracteres. E pode haver quem esteja exercendo validação / saneamento de entrada excessivamente zeloso por causa da paranóia devido à falta de entendimento de ameaças reais.
fonte