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

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

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

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

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

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

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

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

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

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

12091 次点击
所在节点    全球工单系统
88 条回复
xiangyuecn
2019-01-17 09:40:49 +08:00
@xianxiaobo #74 根据我个人对 三大运营商 手机号的理解,几十年来首位 1 都是多余的。。除了增加号段、还没出现过增加位数的先例。如果 1 可以改成 2-9 还有很大的发展空间,就是不知道有什么难点,宁可复用垃圾号码也不增加容量。
xiangyuecn
2019-01-17 09:46:02 +08:00
@firebroo #72 原来是 ssrf,怪不得眼熟,想起一个严峻的事情,就是人家提交过来的合法域名格式的 url 也不一定安全,谁知道他会不会把 DNS 记录写成内网地址,看样子水深了不少。。

不知道简书、掘金发文那里怎么把图片捞过来的?
xiangyuecn
2019-01-17 09:50:20 +08:00
@veike #79 本来有两个选择:宽松、严格,现在又加一个:宽松、中等、严格。选择恐惧症,我还是喜欢简单粗暴的,要么就是 True,要么就是 False
firebroo
2019-01-17 10:07:59 +08:00
@xiangyuecn 限制提交数据为.jpg ,.png 等白名单图片后缀格式的 url,也可以对返回数据做检测,根据前面几个字节判断是不是图片格式,这样即使可以 ssrf,危害也大大减小。单独划一个公网段和内网隔离做爬虫,黑名单内网 ip 段。
MrUser
2019-01-17 10:18:23 +08:00
这种验证确实很烦人,
我遇到的类似的情况:有些注册帐号的地方只认常见的邮箱后缀,你填个 root@xyz.xyz 非说邮箱不正确,只让填 @gmail.com \ @163.com \ @qq.com 类的
no1xsyzy
2019-01-17 10:52:15 +08:00
我 126 的邮箱很多国外网站不能注册,说邮箱域名不符合规范……
国内反而是更清楚地知道存在 126 和 163 这种纯数字一级域,导致兼容性更高……
Klingon
2019-01-17 12:47:22 +08:00
从安全角度和业务需求上,更倾向于白名单的写法
huangdayu
2019-01-17 20:31:07 +08:00
@lincanbin 还有 http://baidu.中国 等

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

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

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

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

© 2021 V2EX