javascript - 在 couchdb reduce 中使用 "eval"- 这有多危险?

标签 javascript couchdb mapreduce

我的文档包含错误列表。 我有一个 View ,它计算具有特定错误的文档数量,以及具有给定错误的文档的平均错误数量。

map

function (doc) {
var i;
for (i = 0; i < doc.errors.length; i = i + 1){
    emit([doc.errors[i], doc.flummery], [1, doc.errors.length])
}

}

减少

function (key, values, rereduce) {
var avg = [];
var cnt = [];
var i;
for (i = 0; i < values.length; i = i + 1) {
    avg.push(values[i][1]);
    cnt.push(values[i][0]);
}
return [sum(cnt), eval(avg.join("+")) / avg.length]

}

我已经多次读到,使用 eval() 会导致疯狂,但我想不出有什么方法可以真正让我陷入困境。 eval() 在 couchdb View 中安全吗?

请注意,Oleg 给出了显而易见的答案,即“不要这样做,couchdb 为您提供了一个 sum() 函数”。很明显,在这种情况下不需要 eval()。但是,如果我需要它,考虑到我可以很好地控制我的输入,使用它是否安全?

最佳答案

不能用sum(avg)/avg.length代替吗?

eval 调用编译器的全部功能有明显的缺点:它占用大量资源,并且会引入很大的安全漏洞,除非您仔细清理输入。

关于javascript - 在 couchdb reduce 中使用 "eval"- 这有多危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11037481/

相关文章:

javascript - 带有 angularjs 的 Internet Explorer 中的 Blob url

javascript - 如何在每次刷新/加载页面时播放 "loop once"动画 GIF 背景?

synchronization - 具有共享数据可扩展性的 CouchDB db-per-user

Node.js/CouchDB : Use . json 文件而不是数据库 + 版本控制

hadoop - Apache Pig:Guice创建错误。 java.lang.NoSuchMethodError

javascript - 使用 href ="../foo/"从 <a> 获取路径名(相对于主机)

javascript - 使用 jQuery 嵌套 JSON 获取

couchdb - CouchApps 和用户身份验证

mapreduce - couchdb View 使用另一个 View ?

hadoop - Map Reduce 作业中的 NullPointerException