Tag: 安全性

如何在受限制的互联网访问环境中使用npm

在不是每个用户都有权访问的受限环境中,我希望能够在任何可能的情况下脱机使用npm。 我的想法是将全局configuration指向一个共享的caching目录,以便高级用户可以进行安装,并且依赖关系将在caching目录中结束。 然后,其他用户可以执行npm脱机安装以前在caching中的任何内容。 所以2个问题: 这会工作吗? build立我自己的本地npm仓库是否有一个更简单的方法?

使用node.js和session.socket.io进行安全authentication?

我正在使用最新版本的node.js和session.socket.io ,这是我设置会话的方式(请注意,我没有使用HTTPS连接,所以secure: true ): app.configure(function() { app.use(cookieParser); app.use(express.session({ signed: true, store: sessionStore, secret: 'SECRET', cookie: { maxAge: 24 * 60 * 60 * 1000, httpOnly: true } })); }); var sessionSockets = new SessionSockets(io, sessionStore, cookieParser); // Later sessionSockets.on('connection', function(error, socket, session) { // session could be used here to detect if user is logged […]

我可以把npm node_modules目录放在我的'webroot'

我对Node很陌生,但是到目前为止我都很享受。 我试图将我的node_modules (库)目录移到公共“webroot”之外,需要build议和指导。 我已经安装了我的简单的基于expressJS的Node项目,如下所示: /my_project /config /public /node_modules server.js 我想知道是否有任何方法我可以有/node_modules目录我的webroot之外,而不是打破我的应用程序。 我只是习惯于保持公开暴露的webroot中的最小值,并且对那些库中的libs不感到满意。 打电话给我老式的,但这就是我习惯于在PHP和C#世界做的东西。 如果我按照以下步骤设置项目: /my_project /config /node_modules /public server.js 那么这一切都会摇摆不定,而Node的require()魔法则会破灭。 我已经尝试了以下内容: var express=require('../express'); 这不起作用或者给我'找不到模块'types的错误。 我甚至在问什么,如果是的话,怎么样? 是否有任何主要的风险,我有我的libs在一个webroot或者我错过了一些基本的方式与节点的工作方式。 你们做什么,生产应用程序的最佳做法是什么? 我可以举一些你的生产实践,为什么。

child_process在node.js安全/转义中产生

在Node中,我使用了一个模块( GM ),并注意到它使用了child_process模块中的spawn来传递参数给GraphicMagick的convert可执行文件。 我将用户提交的信息传递给GM​​。 是否有安全问题,用户可以使用pipe道(或其他命令行欺骗)进行某种注入攻击? 还是spawn保护呢? 如果不是的话,在这种情况下是否有逃避用户提交值的最佳做法?

require('https')vs require('tls')

我正在尝试使用Node.js,Express.js和TLS(1.2)在客户端和服务器之间创build一个非常安全的连接。 我认为我的问题在于理解TLS究竟是什么 – 意味着什么在交换,什么时候以及如何由谁来交换。 无论如何,我正在寻找像一个疯狂的人(疯狂的人)互联网试图找出如下: 什么是var tls = require('tls'); 调用? 什么是var https = require('https'); 调用? 当使用另一个节点作为客户端时,我可以使用它,但在这种情况下,客户端将是浏览器中的用户。 我可以同时使用浏览器或仅https? 谢谢

在node.js中,我将如何遵循最小特权原则?

想象一下 ,执行两个主要function的Web应用程序: 从需要更高权限的文件中读取数据 从需要较低特权的文件中读取数据 我的假设:要允许读取这两个文件,我需要使用可以读取这两个文件的帐户运行节点。 如果节点在可以访问这两个文件的帐户下运行,那么由于Web应用程序代码中存在安全漏洞,不能读取任何需要更高权限的文件的用户可能会读取这些文件。 这将导致我想象中的Web应用程序世界的灾难性后果。 理想情况下,节点进程可以使用一小部分权限运行,然后在访问系统资源之前临时升级这些权限。 问题:节点能否临时升级权限? 或者,还有更好的方法? 如果没有,我正在考虑运行两个不同的服务器(一个具有较高权限,一个具有较低权限),然后在转发请求之前将它们放在代理服务器之后进行身份validation/授权。 谢谢。

下面的JavaScript安全的从任意代码执行?

我正在贡献一个JavaScript框架,具有相当于下面的代码: eval("'" + user_input.replace(/'/g, "'") + "'"); 我知道这很糟糕 – 不需要说服我。 我想知道的是,我可以在这里注入任意代码吗? 乍一看, user_input.replace("'", "'")会阻止我跳出string。 不过,我可以通过新行,如\nalert(123)\n ,但结果总是一个语法错误,例如 ' alert(123) ' 实际上是否有一个用于代码注入的向量,除了导致语法错误?

validation在php中生成的nodejs中的密码哈希值

我的php代码使用password_hash生成一个哈希,我将其存储在数据库中。 以下是PHP代码: $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost)); 我想validation/检查在nodejs这个散列的密码。 我看到很多节点模块(bcrypt,phpass,node-bcrypt),但都是假的。 下面是在PHP中生成的示例哈希,我试图在nodejs中validation。 var hash = '$2y$08$9TTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2'; var bcrypt = require('bcrypt'); bcrypt.compare("secret", hash, function(err, res) { console.log(res); }); (这里的秘密是真实的密码) 我目前的解决方法是通过节点调用一个PHP脚本来validation(对于任何需要解决方法的人) var exec = require('child_process').exec; var cmd = 'php verify.php password encryped_pasword'; exec(cmd, function (error, stdout, stderr) { // output is in stdout console.log(stdout); //If stdout has […]

Websocket,socket.io,nodejs和安全性

我正在研究实时分析应用程序,并使用websockets(通过socket.io库)和nodejs。 不会有通过websockets发送的“敏感”数据(比如名字,地址等)。 它只会用于跟踪访问量并跟踪访问者总数(以及访问量排名前十位的访问者数量)。 我应该知道哪些安全问题? 我是否打开自己: DoS攻击? XSS攻击? 还有哪些安全漏洞可以用来访问networking服务器/networking服务器的局域网? 还有什么我没有在这里提到的? 谢谢!

如何创build安全(TLS / SSL)Websocket服务器

我正在使用node.js的WS websocket库。 目前我正在运行ws服务器。 现在我想通过使用安全连接来保证这个连接,即通过实现wss协议和库支持TLS连接。 我search了一下,发现这很简单:wss和这个wss用自签名证书 。 两者都不是很详细,第二个链接上的文章用自签名证书描述了wss。 我想知道的是,如果创build自签名证书并将其部署到我的生产环境中,还是需要购买证书,而我们需要在创buildHTTPS服务器时执行该操作?