为了学习,我尝试使用golang和 httprouter
从https://github.com/julienschmidt/httprouter 它应该很容易受到通过mongodb注入nosql的攻击。据我所知,使用javascript执行这样的攻击应该相当容易,但我还没有找到任何关于golang的信息。
我可以用javascript编写web应用程序,但我不熟悉javascript,更喜欢使用golang。
据我所知,nosql注入可以使用诸如 $exists, $gt, $where
对我来说,攻击向量是使用嵌套查询对象,使用这些操作符。在服务器上对它进行硬编码还不会带来问题,为了让它完美地工作,json需要 bson
; 这就是问题的症结所在。我似乎找不到一种方法将用户的输入传递给 bson.M(unordered)
或者 bson.D (ordered)
,需要允许。查找运算符以接受嵌套的 bson
.
希望我说的有道理,下面是两个例子,上面的一个从用户那里获取输入,下面的一个有一个嵌套的bson硬编码。
//Fetch user
name := p.ByName("name")
c := uc.session.DB("godb").C("users")
if err := c.Find(bson.M{"name": name}); err != nil {
w.WriteHeader(404)
return
}
d := uc.session.DB("godb").C("users")
if err := d.Find(bson.M{"name": bson.M{`$gt`: ""}}); err != nil {
w.WriteHeader(404)
return
}
最上面的代码返回一个空数组,因为用户的输入并没有作为 bson
正确地。第二个代码返回mongodb中的所有文档。在这件事上如有任何帮助,我将不胜感激
暂无答案!
目前还没有任何答案,快来回答吧!