V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
vvhhaaattt
V2EX  ›  MongoDB

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

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

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

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

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

    一些脚本型语言如 Node.js 中采取了另一种安全机制,即必须使用 evel 等特殊 API 才可以将字符串作为程序运行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:45 · PVG 00:45 · LAX 08:45 · JFK 11:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.