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

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

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

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

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

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

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

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

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

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

12114 次点击
所在节点    全球工单系统
88 条回复
zsdroid
2019-01-16 14:28:39 +08:00
老是有 自作聪明的 程序员在 需要验证的地方说不要验证
iwtbauh
2019-01-16 14:35:27 +08:00
这个问题不是“不需要验证”,而是“验证的方式不对”。

当然需要验证,但是把收集后戳作为知识塞入代码明显是不对的。而且也是违反互联网标准的。DNS 不就是为了解决这个诞生的吗。
zwh2698
2019-01-16 14:39:10 +08:00
建议学习安全编码
daixu
2019-01-16 15:37:31 +08:00
这种东西大概率是测试或者产品提出来。然后开发才写死的。关开发的猫猫关系啊。没事谁愿意把这东西写死咯。
corkspin
2019-01-16 15:50:10 +08:00
@daixu 说得对,产品和测试说 abcd.abcd 不是一个域名,199..不是一个手机号。 楼主那两个正则可比下面的简单太多了。
xnode
2019-01-16 16:05:14 +08:00
...喷的点不对吧,要喷就喷 新浪不能快速迭代验证
tianyou666shen
2019-01-16 16:18:39 +08:00
楼主没上过班吗?
这种业务需求能是程序员定的 ? 没见过一种生物叫做产品吗?
不晓得这位大佬在哪里高就 是几个人团队的 leader ...
woodensail
2019-01-16 16:24:37 +08:00
@xiangyuecn
很多时候安全性是重于可用性的
woodensail
2019-01-16 16:25:14 +08:00
嗯,我好像回错人了,算了……
ioven
2019-01-16 16:30:31 +08:00
@xiangyuecn 收验证码的手机号不用验证?难道直接发短信?
xiangyuecn
2019-01-16 16:43:54 +08:00
@ioven 我说的没这么极端。。。我在 13 楼 说的意思是通过格式验证并不能校验有效性,能简化的尽量简化,就算把正则写出花了,复杂表达式和简单表达式在对安全性上的作用基本属于同一个量级。
gesse
2019-01-16 16:54:35 +08:00
大家都散了吧, 无法沟通。
zhttty
2019-01-16 16:56:58 +08:00
看了你的内容和“随手写”,我觉得楼主就是那种程序员,拿自己举例挺好的,这下子大家都明白什么叫做“自作聪明”了。
rqzheng2008
2019-01-16 16:59:29 +08:00
可以,很自作聪明的 lz
balamiao
2019-01-16 17:03:14 +08:00
楼主够沙雕~
weixiangzhe
2019-01-16 17:11:03 +08:00
通用正则搞个 cdn 更剩事吧
xiangyuecn
2019-01-16 17:18:48 +08:00
#35 这个人就懒得 @ 你了

@zhttty @rqzheng2008 也许吧,其实我真实那种是自我感觉良好的,随你们怎么说~

不过如果你们仔细思考一下微博里面的细节,也许会有不同的论断。
lincanbin
2019-01-16 17:20:57 +08:00
域名还支持中文域名。
http://中文.tw
xiangyuecn
2019-01-16 17:26:58 +08:00
@lincanbin 嗯,如果要直接支持中文域名,正则会难写好多,不过也许绕一下会简单好多,如果用户的域名带 Unicode 字符,可以填写 Punycode 表示的域名。微博开放平台别说小众顶级域名不支持了,中文域名就更不支持,哈哈,上午我试了下,挺好玩的
allenhu
2019-01-16 18:17:37 +08:00
没毛病,够用就好,那些奇奇怪怪的域名,可以忽略

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

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

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

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

© 2021 V2EX