Одним из аспектов веб-приложений, который почти всегда упускается из виду, когда речь заходит о доступности, является то, насколько легко может быть прочитана любая случайно сгенерированная строка. Если вам повезло иметь почти идеальное зрение и у вас нет проблем с обучением или когнитивными нарушениями, такими как дислексия, вы можете не испытывать никаких проблем при чтении случайно сгенерированных строк, но для многих пользователей, различающих ноль и верхний регистр Os, единицы и строчные буквы Ls и даже буквы b и d могут быть сложными.
Итак, в недавнем проекте, который требовал от меня автоматической генерации паролей по запросу, я решил применить это на практике с помощью следующей функции PHP:
function GenerateRandomString($length) {
$characters = array('2', '3', '4', '5', '6', '7', '8', '9',
'a', 'c', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'p',
'q', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$randomString = "";
while(strlen($randomString) < $length) {
$randomCharacterIndex = rand(0, count($characters) - 1);
$randomString .= $characters[$randomCharacterIndex];
}
return $randomString;
}
Здесь не происходит ничего особенного, за исключением того, что упомянутые ранее иногда проблемные пары персонажей были устранены.
Теперь верно, что если мы будем использовать эту функцию для генерации паролей, созданные пароли будут менее безопасными — эта функция может создать только 28 5 (17 миллионов) разных пятисимвольных паролей, тогда как, если бы я включил отсутствующие символы, это число было 36 5 (60 миллионов). Это компромисс, который вы должны будете принять взамен меньшего количества разочарованных пользователей, испытывающих трудности при входе на ваш сайт, что можно смягчить, заставив пользователей сменить сгенерированный пароль на выбранный ими.
Примечание . Если вы знаете других персонажей, с которыми у людей возникают проблемы, оставьте комментарий, и я обновлю этот пост. Благодарность!