老是有 自作聪明的 程序员在 会随时间变化的地方 用手写白名单 还不更新

2019-01-16 13:25:22 +08:00
 xiangyuecn

见得多的: 编写代码那个时代存在的手机号段正则表达式(人才)。。。

不能忍的: 编写代码那个时代存在的顶级域名正则表达式(还不全)。。。

最近遇到个扫码工具不认一个 url,小众顶级域名,改成.com 这个顶级域名就可以就可以认。不难猜想,写这个代码的程序员如此的牛逼,找了一段自认为可以降服一切的域名下 url 的匹配方式。。让每年可能会出那个个把子的顶级域名情何以堪?

昨天在微博上搞微博登录,发现应用信息里面可以填安全域名,我的一个小众顶级域名后缀域名死活不认,工信部都认了。。。改成 com 就这种问题,今天研究了一下他们家代码,真是写的一手好代码呀,微博前端团队+后端团队,估计前后端这个限制代码都是同一个人写的吧,绕都绕不过。。。人才

解决办法:简化规则,皆大欢喜~ 手机号,url 大部分地方都可以使用最简化的正则表达式来判断。

随手写一个域名判断:/^([\w-]+.)+(\w+)$/,应该能适用大部分地方,小部分除外,新出顶级域名还不用更新。 随手写一个手机号判断:/^1\d{10}$/,应该能适用大部分地方,小部分除外,新出号段还不用更新。

另:记得 chrome 里面使用的是一个地方维护着的顶级域名列表,这种需要判断顶级域名的地方并且需要显示自己牛逼的地方,不学学?

主要呼叫微博吧,其他的就算了,开放平台->我的应用->基本信息->安全域名

12114 次点击
所在节点    全球工单系统
88 条回复
nervdy
2019-01-16 13:34:25 +08:00
你的随手写可能会留下更大的坑
drydiy
2019-01-16 13:40:23 +08:00
你这随手写思考过??
这不严谨的态度明显不对。
xiangyuecn
2019-01-16 13:41:50 +08:00
@nervdy 我觉得微博这里就算不验证格式,随便写 abcd,也不会对业务逻辑产生任何影响,也不会有安全问题,你能用 abcd 这个域名访问微博接口,说明你已经持有了 abcd 这个域名,虽然这个域名看起来不合规。

留坑也比不能用好更好些吧~
frye
2019-01-16 13:42:57 +08:00
处于安全的角度,我觉得微博的做法没错
xiangyuecn
2019-01-16 13:43:36 +08:00
@drydiy 大部分场合不需要这种多此一举的严谨,你觉得呢。尤其是这个扫码的,想想就怪怪的
flyingghost
2019-01-16 13:44:52 +08:00
宽标准=前瞻性=漏洞百出的校验?
严标准=基于现实=无法适应变化?
这两条路都不是什么好路子。
好路子难道不是
基于当前的严标准 + 配置化等易扩展易维护的结构 + 最重要的时时刻刻维护更新 嘛?
xiangyuecn
2019-01-16 13:47:50 +08:00
@frye 这是导致不能用的安全。。

这个地方重要的应该是判断书写是否错误,而不是用来判断域名有效性。如果要判断输入有效性,应该判断这个域名的有效性( DNS 解析、whois 之类的),而非特定格式。
xiangyuecn
2019-01-16 13:49:21 +08:00
@flyingghost 难在维护更新,要是他们会更新,也就不会导致这种问题。
sagaxu
2019-01-16 13:49:59 +08:00
小众域名客户的商业价值低,爱用不用
xiangyuecn
2019-01-16 13:51:50 +08:00
@sagaxu 无言以对,事实如此呀,记得前几年这个域名注册商哪里注册好了,然后自己很多地方自己都不支持这个域名,无奈~
reus
2019-01-16 13:56:51 +08:00
程序员才懒得做这种事情,一般是傻逼产品的锅
gesse
2019-01-16 13:58:48 +08:00
你怎么知道人家是手写、固定死了的? 现在很多 JS 都是配置然后生成的
xiangyuecn
2019-01-16 14:01:08 +08:00
想到一个绝佳的例子:
手机号,不会错的地方不校验也不会错,会错的地方怎么校验都可能出错。

注册:手机号要收验证码这种,就算不校验手机号格式,也 100%不会出错。
收获地址:手机号随便填大部分好像不会验证真实性,这个地方就算校验了格式,还是可能输错,而且还发货了,快递小哥找不到人这种。。
xiangyuecn
2019-01-16 14:04:13 +08:00
@gesse 哈哈,神奇的在于配置是手写固定死的,还不更新,虽然经过 build 这个伪动态过程,按这个逻辑往上盘
geelaw
2019-01-16 14:10:34 +08:00
🙄您连 dot 都忘了转义
xiangyuecn
2019-01-16 14:12:23 +08:00
@geelaw 哦,改不了啦,被你发现了~
iNaru
2019-01-16 14:17:50 +08:00
https://www.publicsuffix.org/learn/

Some people use the PSL to determine what is a valid domain name and what isn't. This is dangerous, particularly in these days where new gTLDs are arriving at a rapid pace, if your software does not regularly receive PSL updates, because it will erroneously think new gTLDs are not valid. The DNS is the proper source for this information. If you must use it for this purpose, please do not bake static copies of the PSL into your software with no update mechanism.
wysnylc
2019-01-16 14:21:19 +08:00
您可真不自作聪明
lhx2008
2019-01-16 14:22:24 +08:00
QQ 邮箱还只能发几个后缀的邮箱呢,V2EX 也有一票域名不能识别
alvin666
2019-01-16 14:23:46 +08:00
手机号重置全是这样写死的,199 刚出来的时候哪里都不能充值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX