当我申请 DHL(德国包裹递送服务)的服务时,他们有迄今为止我见过的最奇怪的密码指南:
- 至少 8 个字符,但不超过 13 个。
- 仅使用“有效”字符。给定的字符不包括
'
or"
or;
or\
,这是我首先尝试在 SQL 注入中使用的东西。 - 至少一个大写和小写字母。
- 一个数字,但不是开头。
为什么要禁止将数字作为第一个字符?在一个完美的世界中,他们会使用bcrypt
or对密码进行加盐和哈希处理,scrypt
并且所有对熵上限的限制都可以轻松解除。显然,他们的存储系统很弱,VARCHAR(13)
或者是遗留代码和货物崇拜管理的可悲组合。
我仍然无法理解关于密码开头没有出现数字的规则。为什么要这样做?我唯一能想到的是 PHP 将表达式计算"1Test" == 1
为真。否则编程语言中的标识符也不能以数字开头。或许这就是“有效章程”的由来?
有人能猜出 DHL 在后端做什么吗?