前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小红书这个 bug 还真是有点搞笑呢。

小红书这个 bug 还真是有点搞笑呢。

作者头像
why技术
发布2024-08-06 12:35:18
1420
发布2024-08-06 12:35:18
举报
文章被收录于专栏:why技术

你好呀,我是歪歪。

刚刚在小红书上冲浪的时候,发现了这样一条内容:

我开始以为是一个钓鱼贴,骗评论的。

结果发现评论反映确实是发不出来。

于是我也试了一下:

当我在小红书的评论区输入 time.sleep(1) 之后,弹窗提示“似乎已断开与互联网的连接”。

通过浏览器观察,可以看到后端返回的 405 状态码:

然后我尝试着在搜索框里面搜了一下:

这波就更厉害了,直接就是弹出“网络断开”的错误页面。

你就说这是不是 BUG 吧?

什么,你说这是 future?

我又不是憨憨,你为什么要骗我,哪怕你说是彩蛋呢?

都稍微合理一点。

针对这个现象,小红书的小姐妹们在评论区讨论的非常热闹,你看这个评论数就知道了:

按照这个逻辑推理,我试着输入了一下这个玩意:

《script》alert("xss")《script/》 //后面会解释为什么用中文

果然,出现了一模一样的问题。

我作为程序员,针对这个现象当然能大概联想到“注入攻击”这样的关键词。

毕竟 time.sleep(1) 和 《script》alert("xss")《script/》 这类评论是有代码含义的。

但是我理解不了的是为什么小红书会抛出一个“网络连接异常”给到用户。

这样不是更加具有迷惑性吗?

歪师傅当年接了一个需求也是类似的,防止用户在输入框进行 XSS 攻击。

主要就是对所有用户输入进行过滤,特别是当用户的输入被包含在 HTML、JavaScript、CSS 或 URL 中时,按照正常逻辑来说,是要过滤掉或转义掉潜在的危险字符,比如 <、>、&、" 和 ' 这些玩意。

但是我当时就是直接一个大力出奇迹,我也懒得过滤,比如用户输入中包含一些 html 标签的时候,我就直接弹出一个非法输入。

我知道这个做法很糙,但是反正也是内部人员使用的页面,糙点也就糙点了。当他们拿着问题来找我的时候,我就告诉他:这是一个历史悠久的技术问题,解决起来比较棘手,你尽量使用中文符号,就好使了。

但当这个问题放在小红书,这个面向 C 端用户的 APP 来说,在提示上就值得好好琢磨了。

首先,我个人觉得这类评论直接在前端拦截到,是合理的。

因为正常用户按理来说是不会输入这样的评论的,输入这样评论的用户,一定是有某种意图。

比如前面大量的用户在评论区输入这样的评论,是因为有这样的引导,然后她们出于一种不相信或者猎奇的心态,觉得很有趣,第一次遇到这种情况,才在评论区输入了这样的评论。

所以,能偶然间触发这个 bug 的用户应该非常之少,没有必要为了这么一小部分用户,费心费力的去想着怎么把这部分“奇怪”的评论落下来。

但真的遇到了这样的输入,直接提示一个“非法输入”我觉得都比提示“网络异常”合理很多。

一般来说,能输入这个评论的用户,心里也明白这是一个“非法输入”。

当然了,这都是歪师傅自己的看法,如果你有更友好的实现方式,也可以在评论区交流一下。

我学习学习。

评论

在这个小红书下面有一个热评是这样的:

诶,不是说好打不出来吗,这个评论又是怎么回事呢?

你想想,你在写代码的过程中,有没有被 l(小写的 L),(I)大写的 i,数字 1 搞过?

甚至还有人教我的“丨”,这种存粹恶搞的玩意:

l,I,1,丨 。

这四个哥们放在一起,在有的平台上面真的是,“安能辨我是雌雄”。

所以,上面这个热评中 sleep 中的 l 其实是大写的 I:

这两个字母在小红书里面的差异,真是像素级别的。

我给你演示一下,第一个 l 是小写的 L,第二个 I 是大写的 i:

肉眼看真的看不出来啥区别。

但是放大到像素级别的时候,你会发现它们有一个像素的差异:

真的就一个像素。

还有比如这个评论,他输入了中文括号,成功了:

我从这个评论中看到了一点“信息茧房”的味道。

作为一个程序员,只要看到别人说:“你使用的是中文的括号”,立马就能反应过来。

但是对于非程序员来说,他一时间很难理解这其中的差异。

这就是一种信息茧房。

同时作者还提示在“time.sleep(1)”加入其他内容就能正常显示:

比如他第一句解释中就包含“time.sleep(1)”,就能正常发出来。

于是,我想到了一个只有程序员能懂,且能迷惑到程序员的一个输入:

//time.sleep(1)

在这个场景中,你会不会一瞬间把 // 理解为了注释?

大脑真的就很神奇,它会自动帮我们解析很多信息。

这也让我想起了以前在网上看到的一个段子。

有个资源包的解压密码是“鲁迅的本名”。大多数人都会输入“周树人”,提示错误,多次尝试后才反应过来,解压密码原来就是“鲁迅的本名”这几个字。

不知道这个问题的答案或者母语非中文者就不会被困扰,因为缺乏相关知识,他们的大脑不会自动解析这些信息。

确实有点意思,就当是一个让人蛋疼的冷知识吧。

最后,来一个梗图:

就在我写完文章,准备用 mdnice 转公众号格式的时候,也遇到了这样的问题:

直接从这里开始截断了...

好吧,也是一种处理方式。

所以,我这个地方用的是中文符号。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 why技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 评论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档