【发布时间】:2021-02-18 21:48:38
【问题描述】:
我在 oracle 18 xe 中为我的数据库执行约束时遇到问题,
我需要的是密码有
- 至少 5 个字符
- 至少两个大写字母
- 至少两个小写字母
- 至少一位数
我已经做了足够多的搜索,但找不到正确的方式,到目前为止我都穿这个
ALTER TABLE USER
ADD CONSTRAINT PASSWORD_CHECK
REGEXP_LIKE(PASSWORD, '^.*[0-9]', 'c')
AND REGEXP_LIKE(PASSWORD, '^.*[A-Z]{2,}', 'c');
AND REGEXP_LIKE(PASSWORD, '^.*[a-z]{2,}', 'c');
AND REGEXP_LIKE(PASSWORD, '^[a-zA-Z0-9]{5,}$', 'c');
感谢您的支持!
【问题讨论】:
-
如果您这样做是为了学习在数据库中使用 Regexp,那很好,但不要存储密码或将密码按原样发送到数据库,请考虑在 UI 中对密码进行哈希处理,并且仅通过网络发送散列值以存储在您的数据库中,在用户输入时应用验证规则。
-
自动否决将用户密码存储为明文。这就是人们被黑客入侵的方式。即使您的问题只是针对作业,您也需要了解这是一种可怕的、不道德的编码实践。至少,使用
STANDARD_HASH之类的东西而不是纯文本。
标签: sql oracle oracle18c oracle-xe-18.4