Craig Anderson今天在 SitePoint的"Web Tech"博客上提交了一篇关于更友好的密码的文章。
在谈论一个Web应用的可访问性(accessibility)时,经常被忽视的一个问题是应用中随机字符串的可读性。如果你非常幸运地拥有极好的视力,并且没有诸如诵读困难症等学习或认知上的缺陷,可能就不会碰到识别随机字符串方面的困难。但是对于很多人来说,识别零和大写的O、1和小写的L,甚至字母b和d,是一件头疼的事情。
作者提供了一个简单的PHP脚本,从一个预定义的数字和字母数组中产生随机字符串,从而提高它的可读性。很明显,它的安全性要比其他一些方法差,但是对于大部分的应用而言,它的值域已经足够用了。
译注:他的做法其实很简单,就是把随机字符串中可以出现的字符限制在一个容易识别的字符集之内,去掉那些容易混淆的字母数字。下面是他的代码:
| 1 |
function GenerateRandomString($length) { |
| 2 |
$characters = array('2', '3', '4', '5', '6', '7', '8', '9', |
| 3 |
'a', 'c', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'p', |
| 4 |
'q', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); |
| 5 |
$randomString = ""; |
| 6 |
while(strlen($randomString) < $length) { |
| 7 |
$randomCharacterIndex = rand(0, count($characters) - 1); |
| 8 |
$randomString .= $characters[$randomCharacterIndex]; |
| 9 |
} |
| 10 |
return $randomString; |
| 11 |
} |