小编hei*_*nob的帖子

保护JavaScript eval功能

我们希望让用户能够在我们的应用程序中执行自己创建的JavaScript代码.为此,我们需要eval用来评估代码.为了将所有安全问题降至最低(如果不是零),我们的想法是防止在代码中使用任何windowdocument函数.所以没有XMLHttpRequest或类似的东西.

这是代码:

function secure_eval(s) {
    var ret;

    (function(){
        var copyXMLHttpRequest = XMLHttpRequest; // save orginal function in copy

        XMLHttpRequest = undefined; // make orignal function unavailable

        (function() {
            var copyXMLHttpRequest; // prevent access to copy

            try {
                ret = eval(s)
            } catch(e) {
                console.log("syntax error or illegal function used");
            }

        }())
        XMLHttpRequest = copyXMLHttpRequest; // restore original function
    }())
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

其工作原理如下:

secure_eval('new XMLHttpRequest()'); // ==> "illegal function used"
Run Code Online (Sandbox Code Playgroud)

现在我有几个问题:

  1. 这种模式是正确的安全方式 …

javascript eval

11
推荐指数
2
解决办法
3856
查看次数

为什么没有正确设置此shell变量

我的linux机器上有一个特定的用户,以下命令

json='[{"date":"2016"}]' && echo ${json}
Run Code Online (Sandbox Code Playgroud)

输出1而不是[{"date":"2016"}].

我的机器上的所有其他用户都能正常工作.当我将命令更改为(省略1)

json='[{"date":"206"}]' && echo ${json}
Run Code Online (Sandbox Code Playgroud)

它的工作正确.

我正在拼命寻找导致这种效果的用户的配置差异.但说实话,我不知道.

那里有任何提示吗?

linux bash

11
推荐指数
1
解决办法
120
查看次数

EADDRNOTAVAIL经过多次对localhost的http.get请求

在我获得28233个请求后,对localhost(Apache)做了很多http.get请求EADDRNOTAVAIL.

坏了的时候:

  • 不能为localhost 一个http.request for(round)10秒(EADDRNOTAVAIL)

这10秒钟

  • 能做到 curl http://localhost (Apache没有错误,它仍然像魅力一样工作)
  • 可以做 一个http.get-request(从node.js)到www.google.com(该错误只影响对localhost的请求)

10秒后

  • 可以再次对localhost 执行 http.request(就好像node.js已经自愈了)

这是代码:

var http = require( "http");

function httpRequest( callback ) {
    var options = {
            host: 'localhost',
            port: 80,
            path: ''
        },
        data = "";

    http.get(options, function(resp){
        resp.on('data', function( chunk ){   
            data += chunk;
        }).on("end", function() {
            callback( null, data );
        });
    }).on("error", function(e){
            callback( e );
    });
}

function …
Run Code Online (Sandbox Code Playgroud)

httprequest node.js

8
推荐指数
1
解决办法
5175
查看次数

错误:在处理大异步循环时连接 EADDRNOTAVAIL

我遇到了一个非常奇怪的问题。我正在导入一些大的 xml 文件并将它们存储到 mongoDB 中。该算法是一个典型的异步循环:

doLoop = function( it, callback_loop ) {
    if( it < no_of_items ) {
        storeToMongo( ..., function( err, result ) {
                ...
                doLoop( it+1, callback_loop );
        });
    } else {
        callback_loop();
    }
};
doLoop( 0, function() {
    ...
});
Run Code Online (Sandbox Code Playgroud)

现在(代码中突然没有任何显着变化)我在执行循环时收到以下错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect EADDRNOTAVAIL
    at errnoException (net.js:901:11)
    at connect (net.js:764:19)
    at net.js:842:9
    at dns.js:72:18
    at process._tickCallback (node.js:415:13)
Run Code Online (Sandbox Code Playgroud)

大约一分钟后发生错误。在此期间处理的项目数量始终相同,但不完全相同。

我试图找出connect/net导致错误的原因,但我迷路了。我的代码中没有套接字连接。我有一个到 redis 的连接,但是没关系 这是 mongoDB 连接吗?但是为什么会突然消失呢?

唯一有助于运行整个循环的是在 mongo-callback 中执行递归循环调用,如下所示: …

mongodb node.js node-mongodb-native

5
推荐指数
1
解决办法
7945
查看次数

boost :: asio相当于Poco :: Net吗?

我是一个boost用作c ++库的项目的一部分.现在我们要使用SMTP/POP3/SSL/HTTP/HTTPS.我在中检测到了几个拟合类和函数Poco::Net

  • 波科::网:: POP3ClientSession
  • 波科::净MAILMESSAGE ::
  • 波科::网:: SMTPClientSession
  • 波科::网:: HTTPSClientSession
  • 波科::网::的HTTPRequest

我找不到任何相同的东西boost::asio.在我做出最终决定之前,我想询问社区,如果我是对的,或者是否有类似的东西boost......

boost-asio poco-libraries

4
推荐指数
1
解决办法
3085
查看次数

nodejs https 网站无法在IE11中显示

我们的 ssl 网站https://www.redmedical.de无法在 IE11 中显示(dnserror.html - 页面无法显示)。所有(所有!)其他浏览器都可以

我们的网络服务器是一个带有默认密码设置的 node.js 应用程序。证书已增强且有效(正如您在 Chrome、FF、Safari、Opera 中看到的那样)

任何提示这里发生了什么?我试图更改密码设置但没有成功。网络中的所有提示都是针对浏览器设置的,尽管它们都不起作用,但必须在服务器端有解决方案。我认为人们不会更改我们网站的浏览器设置...

谢谢你的帮助

html ssl https node.js internet-explorer-11

4
推荐指数
1
解决办法
2797
查看次数

带有 Ext JS 的 MVC 架构中 store.load() 的动态代理 URL

我想在加载(!)之前更改商店的代理。这种情况下的具体问题是我没有找到合适的时机,何时加载。

详细:

我通过创建 EXTJS4 架构定义的视图、控制器、模型和存储来创建 MVC 模型。该视图是一个网格面板。它在自己的定义语句中定义商店:

Ext.define('P.view.MyView' ,{
    extend: 'Ext.grid.Panel',
    alias : 'widget.MyView',
    ...
    store: 'MyStore',
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用“autoload:true”加载商店时,一切正常,但当然代理是静态的,如代码中所定义。当我不使用“自动加载”并尝试设置“extraParams”并在我的视图的“initComponent”中加载商店时,例如:

initComponent: function() {
    ...
    this.store.load();    
    ....
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:对象“MyStore”没有方法“加载”。

我该怎么做?

proxy extjs extjs4

3
推荐指数
1
解决办法
1万
查看次数

带有异步功能的for循环耗尽了内存

在开始大喊"不要使用具有异步功能的for循环!"之前 我要指出,我知道如何使用异步调用函数在回调中的下一个迭代循环编程.

但是,如果我对回调感兴趣或者只在前一个完成时处理一次迭代.在我的例子中,我从xml文件导入大量记录并将它们写入mongoDB.对我的"写"功能的正常调用将是这样的:

asyncWrite( record, function(err, result) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

现在正如我所说的那样,我对回调不感兴趣(不会发生错误!)也不会在串行进程中感兴趣.所以我使用了for循环并省略了回调:

for( i=0; i<max; i+=1) {
    asyncWrite( record_arr[i] );
}
Run Code Online (Sandbox Code Playgroud)

对于小巧,max这完美无缺.但随着max变大(> 100.000),我最终得到了"内存不足"的错误.防止这种情况的唯一方法是转回"正常"异步循环(来自回调内的递归函数调用).

还有其他想法吗?

javascript asynchronous node.js

2
推荐指数
1
解决办法
1238
查看次数

$ ne查询不使用mongoose但在mongoshell中工作

当我执行这个mongoose查询

FinancedProject.find({_id:{$ne:fb.financedProjects.financedProjectId}).exec( callback);
Run Code Online (Sandbox Code Playgroud)

其中fb是这样的对象

{
    _id: ObjectId("54das4da9dsa9d4ad4a9");
    name: "some",
    financedProjects: [
       {registry:"147", financedProjectId:ObjectId("13da4sd4sa48da4dsa")},
       {registry:"189", financedProjectId:ObjectId("5d5asd5a4sd5ada5sd")}
    ]
{
Run Code Online (Sandbox Code Playgroud)

结果是未定义的,当我在mongoshell中执行它时,结果是预期的

mongoose mongodb node.js

2
推荐指数
1
解决办法
1万
查看次数