列了 MongoDB 的 Golang 使用,注入攻击防范需要注意的点,请大家看看还有其他需要注意的没?

2021-11-20 10:37:11 +08:00
 vvhhaaattt
  1. 看到相关 php+mongodb 的示例,看漏洞原因,感觉主要 php 动态语言对参数进行解析变为了 php 中的合法复杂类型,后传递给 mongodb 的驱动。这样用户输入可能解析为合法的列表之类的 php 对象,以及未区分 bson 中的 String 跟 JavaScript 类型,从而造成注入。
  2. 我看了下 Golang 的 MongoDB 官方驱动,BSON 对 JavaScript 类型的数据是跟 string 分开进行处理的,对 string 有做转义,而 golang 中输入一般是 string 类型的。

问题: 那在 Golang 使用 MongoDB 过程中,如果 MongoDB 查询不传拼接后的 JavaScript ,只有单纯的 string ,是否可以防止相关注入呢?

2202 次点击
所在节点    MongoDB
1 条回复
libook
2021-11-22 11:58:08 +08:00
PHP 的那个注入问题可能和 MongoDB 无关,是 PHP 自己语言特性导致的,字符串被错误地反序列化为 PHP 代码并执行。

Go 是编译型的语言,源代码编译成为了字节码,而运行过程中如果不提供编译能力的话,也无法把字符串入参编译为 Go 字节码并运行。

一些脚本型语言如 Node.js 中采取了另一种安全机制,即必须使用 evel 等特殊 API 才可以将字符串作为程序运行。

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

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

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

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

© 2021 V2EX