1
beren11129 8 小时 54 分钟前 ![]() 东西越少出错的概率越小
|
2
pingdog 8 小时 13 分钟前 via Android
一般旧架构影响没做转义,换新架构也会保留下来
|
![]() |
3
SethShi OP @beren11129 这太绝对了
|
![]() |
5
wen20 7 小时 13 分钟前
用户名通常规则 数字字母下划线, 不知道为什么是这个规定。
|
![]() |
6
panlatent 7 小时 8 分钟前 via Android
权衡吧,github 用户名本质上是 slug
|
![]() |
7
TimePPT PRO ![]() 1. 好校验
2. 某些现成的库、框架限制 3. 避免各种注入攻击 4. 兼容旧系统(比如老的邮件发送系统) |
![]() |
8
TimePPT PRO ![]() @TimePPT 说个冷知识,邮件系统中 local-part (也就是 @ 前的用户名)可以区分大小写也可以不区分大小写,没有强制要求,但很多组织的服务是不区分大小写的,所以一般,为了保证到信率,都不区分大小写。
所以网站如果开放邮箱注册,有经验的程序员都是建议邮箱地址全部转为小写入库的。 |
9
WorseIsBetter 5 小时 8 分钟前 ![]() @TimePPT #8
还有一点就是 "~" 和 "/" 都是可以用于 local-part 的合法字符( RFC 5322 ),但是很多 MTA 不支持(包括我常用的某老牌企业邮箱),导致一些基于电子邮件的服务(比如邮件列表)无法正常使用。 我在使用 lists.sr.ht 的时候就遇到过这个问题,好在他们提供了另外一套地址规则作为 fallback |
![]() |
10
TimePPT PRO @WorseIsBetter 对的,这部分都是比较深入做过登录注册/邮件收发的人才知道。RFC 本身是规范意见,并不是强制标准,所以历史上各种问题五花八门,包袱都很重。比如 RFC 后来扩充邮件地址可以使用非 ASCII 字符,但一般……还真不敢用,很多主流邮件运营商会作为垃圾邮件拒绝收发。
登录注册这块,很多提供邮箱注册的,为了省事,都是只能用主流的邮件服务商的邮箱域注册,且 local-part 故意很严格。 所以,我甚至建议,注册服务的开发,能用三方登录,都别用邮箱,维护成本比较高。 |
11
weiwoxinyou 3 小时 48 分钟前 ![]() 数字字母下划线正则太简单了,如非必要,勿增实体。可以在控制台尝试打印以下 js:
console.log(/^\w+$/.test('a_b'),/^\w+$/.test('a-b')) |