用了参数化查询,还是被 SQL 注入了,上线 3 天几十个用户反馈账号被盗余额被刷完,求助怎么解决?

333 天前
 drymonfidelia

Python+MongoDB 写的一个简单(虽然业务都很简单但是有九百多个接口,选型用 Python+MongoDB 就是为了往上面堆各种奇怪格式的简单接口方便)网站,拉日志排查发现有人提交了类似这种 Payload {"password":{"$ne":"111"}},登录接口好解决,直接 str 转换一下字段,剩下九百多个接口过一遍工作量太大了还容易有漏,有人了解如果我加一个中间件遍历提交的 JSON 把 $ 开头的 key 全部过滤掉就安全了吗?

每次用新技术必被坑,上次是被 Tauri 浪费了一整天

10943 次点击
所在节点    信息安全
82 条回复
laminux29
333 天前
楼主举的注入例子:Payload {"password":{"$ne":"111"}}

这正是参数化查询模块要去处理的事情,如果这还没注入了,你确定你正确使用了参数化查询模块?

建议用 AI 把你的代码检查一遍。
msg7086
333 天前
用户输入的密码为什么能传进 mongo ?换我的话会先取出 password hash 然后再在本地对比。
这系统谁开发的啊这么简单的坑也能中的吗。
输入参数校验是基本要求吧,这不叫工作量翻倍,这是之前为了走捷径把大动脉砍了,现在在亡羊补牢。
再还有,你们的测试代码呢,这种场景不写 behavior test 的吗。
hlwjia
333 天前
既然你觉得用 ORM 怕麻烦,那现在处理这些问题你觉得麻烦不?

如果 ORM 光是麻烦,没别的好处,也不会有人一直用吧


还有 #9 楼你写的,“接口太多,校验起来工作量翻倍”,不知道你现在的工作量翻倍了没有
Kinnice
333 天前
1. 先上 waf
2. 没正确使用参数校验模块
among
333 天前
mongoengine 用了吗
vincent7245
333 天前
"接口太多了,校验起来工作量翻倍"

那还能说什么呢,最基础的防护都不做,没被删库也算攻击者仁慈了
MMM25O7lf09iR4ic
333 天前
普通程序员除了依赖框架没有什么好手段,因为他们连相关的概念都没有,谈什么防御。简单的过滤字符串可不代表能解决问题,某个知名库一个特殊字符改了三次才解决问题。
EndlessMemory
332 天前
你这个管理起来问题不小
walkeronway
332 天前
嫌麻烦?这会儿被教做人了吧?你以为为啥大家都在做安全防护,是闲着没事干还是喜欢? C 端产品要直面所有可能的恶意,敢偷懒?

话说静态扫描能扫出来你这些安全漏洞吗?
awolf
332 天前
LZ 开善堂的,大家可以散了
kneo
332 天前
啥叫用新技术必被坑?我看你就是最大的坑……
uiiytwyfsdtr
332 天前
网络攻防 其实防不胜防

只能靠你自己的 经验 和 安全意识
yidinghe
332 天前
你把调用方的参数直接透传给数据库,不死才怪。首先防住登录接口,然后其他接口要有状态,根据调用方权限添加对应的查询条件,而且禁止调用方通过参数覆写这些条件。最后每个接口设置参数白名单,不在白名单中的参数过滤掉。
drymonfidelia
332 天前
@msg7086 这系统只支持短信验证,password 字段存的其实是短信验证码,所以没加密
这套系统需求太杂了都是手动测试
hefish
332 天前
大佬 A:哎呀。。。没搞了,来帮帮我啊。。
大佬 B:你这个要这么这么这么。。。
大佬 A:那太麻烦了,谁有更好的办法吗?
大佬 C:那你先这么这么这么。。。不然会有问题
大佬 A:我觉着没问题。。
大佬 D:你不写个 ORM 吗?
大佬 A:写 ORM 太麻烦了。。。谁能帮帮我啊。。。

。。。。
gwy15
332 天前
你不会是从 req json.loads 读一个 object 然后直接传给 mongodb 吧
janus77
332 天前
哈哈哈,出现安全问题了,然后说别人的方法麻烦。。。
安全就是麻烦的啊,你以为飞机起飞前一遍遍教人使用救生衣是干什么的?
GG5332
332 天前
没有必要冷嘲热讽,安全从来都是一种取舍,只要被黑带来得损失都没有比写 ORM 的麻烦大,那就大可不必写,而且还更好,黑客也很开心,你也很开心。何尝不是一种 win ,win 。现实就是很多业务就是跟羊毛党黑产党相互依存,不离不弃。
lneoi
332 天前
懒的话就上 web 防火墙,或者其他服务器防护软件,多多少少能处理大部分情况
gongquanlin
332 天前
想起来接的一个擦屁股的活,大哥前后端全栈开发,查询语句直接前端拼 where 后端查询
到现在 bug 一堆还没上线,到了上线之后还不知道咋甩锅呢,哈哈哈

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

https://yangjunhui.monster/t/1048156

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

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

© 2021 V2EX