Homeland Ruby China 一个全文搜索的问题

lanzhiheng · 2021年04月13日 · 最后由 lihuazhang 回复于 2021年04月13日 · 149 次阅读

最近 Testerhome 最近被人攻击,用的也是 Homeland,Ruby China 也有类似的问题。有人在搜索框构造这样一个搜索

https://ruby-china.org/search?q=..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2F..%2F..%2F%2Fetc%2Fpasswd

搜索内容为 ../..//../..//../..//../..//../..//../..//../..//../..//etc/passwd

结果在 PG 那里资源就耗尽了。

貌似是./的组合重复太多引发的血案.....

目前粗暴点就先用 uniq 处理了,应该不影响简单的搜索过程,不知道是否有优雅的解决方案? 😂

限制 term 长度?或者过滤掉特殊字符?

yfractal 回复

限制 ter 的长度好像有点粗暴。😂 我也试过过滤啦,不过好像不妥。过滤掉 / 总觉得怪怪的。

lanzhiheng 回复

过长和特殊符号本来就不是正常用户会输入的,完全可以干掉。

对于后端来讲,不限制输入长度的话,可以算作 flaw 了。

后端没义务让所有场景都能返回,但有义务保服务对绝大多数人是可用的。

好奇这种情况下,pg 也没办法提供其他查询和写入了吧?

yfractal 回复

你说的也有道理。确实限制长度也是一种做法。

😀

我也很好奇,pg 没有办法自己防一下么

需要 登录 后方可回复, 如果你还没有账号请 注册新账号