Tag: 安全性

string比较真的不安全?

一些人build议使用简单的string比较来匹配密码是不安全的,因为时间攻击 。 例如看到这个问题 。 那么,我试着测量node.js中两个密码猜测之间的时间差。 这里是代码: const pass = '……………………………………………………….'; const guess1 = '..X…………………………………………………….'; const guess2 = '…………………………………………………….X..'; function ns(hrtime) { return hrtime[0] * 1e9 + hrtime[1]; } test(guess1); test(guess2); test(guess1); test(guess2); test(guess1); test(guess2); test(guess1); test(guess2); test(guess1); test(guess2); test(guess1); test(guess2); function test(guess) { const start = process.hrtime(); for (let i = 0; i < 1e5; […]

你怎么能得到一个密钥和证书对在https中使用?

我正在尝试在Node.js中使用https模块。 代码如下: var options = { key : <key comes here>, cert : <key comes here> }; https.createServer(options, app).listen(app.get('port'));

nodeJS – 我在哪里可以把内容安全策略

我发现这个CSP片段,但我不知道在哪里把它放在HTML中。 Content-Security-Policy: script-src 'self' https://apis.google.com 解? var policy = "default-src 'self'; http.createServer(function ( req, res ) { res.writeHead(200, { 'Content-Security-Policy': policy }); });

在Heroku中完全禁用HTTP

我们有一个在Heroku中运行的node.js快速应用程序。 它处理身份validation,必须是一个高度安全的。 当我们收到HTTP请求时,我们强制redirect到HTTPS。 但是这似乎还不够。 像sslstrip这样的工具,我们可以通过HTTP POST。 唯一的解决scheme似乎是在Heroku上完全禁用HTTP。 怎么做? 还有其他build议吗?

在运行时添加用户密码

我有一些节点的应用程序,应该得到用户密码运行,我不想把用户密码硬编码,但我想一些方法来在部署过程中传递它,就像当我做npm start命令行,并添加也将填写代码的用户密码,有一些最佳实践如何在节点中做到这一点? 在我search后,所以我find了这篇文章,但它没有帮助,因为你把代码放在configuration文件,这对我来说看起来是一样的,用户passowrd提供了我想要避免的代码…任何示例将很有帮助 在Node.Js / Express应用程序中存储数据库configuration的最佳方法 假设文件上的一个需要Runtime的用户密码… 例如 request({ uri: API, method: 'POST', json: true, form: { 'username': 'user123', 'password': 'password123' }, 我想要的是类似于这种方法,(或有更好的东西,我想了解如何使用它) request({ uri: API, method: 'POST', json: true, form: { 'username': ~username, 'password': ~password }, 在部署期间运行以下命令 npm start username user123 password password123

如何使用NodeJS以超级用户身份连接到另一个MongoDB数据库?

解决这个问题的工作很好: 而不是做: $ mongo my_db_name -u superuser -p 1234 我做 $ mongo admin -u superuser -p 1234 # connecting as super user to admin db > use anotherDb 在壳。 哪个是NodeJS的解决scheme? 我试图连接到mongodb://superuser:1234@localhost:27017/my_db_name但我得到这个错误: { [MongoError: auth fails] name: 'MongoError', code: 18, ok: 0, errmsg: 'auth fails' } 我的代码是: var Db = require('mongodb').Db, MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://superuser:1234@localhost:27017/my_db_name", function(err, […]

Node.js和密码安全性:三个问题

我从来没有写过一个用户authentication系统,为了这个项目,我需要平衡安全性和效率(这意味着我不能花费数百个工时来处理安全问题,但是我需要保存密码和login信息安全)。 我正在使用Node.js与expression式框架和护照进行身份validation和会话。 我迄今所做的研究显示了三个要解决的问题。 在今天之前,我几乎不知道如果对这些问题有什么共同的解决scheme,几个小时的随机啄食这些研究并不能使我对我find的答案的完整性有信心。 问题: 不要在数据库中存储未encryption的纯文本密码(可能的答案:salt /散列在服务器上的密码并将散列存储在数据库中。) 不要将纯文本密码通过非安全的http连接(可能的答案:A – 只使用Https进行身份validation过程,之后使用http。B – 在login页面向用户发送随机盐,密码客户端,然后取消哈希和重新encryption数据库存储。) 不要使用GPU以每秒700,000,000个密码破解的弱encryption方法。 (可能的答案:bcrypt) 这些只是我在3个小时的研究中find的最明智的答案。 我不知道这些是否足够,它们的弱点是什么,或者有什么替代scheme。 我很感激任何进一步的洞察力(另外请注意:我甚至不确定 – https传输是否足够保护密码?)

NodeJS&NPM:软件包安全性

鉴于NodeJS的stream行程度以及NPM的工作原理,确保您永远不会安装不安全/恶意软件包的最佳方法是什么? 对我来说,这似乎是一个巨大的漏洞在build筑,完全依靠用户评论,像StackOverflow,个人博客等网站上的评论。我做了一些search,所有我可以find的是一个“计划”一旦投诉提出所述用户违反了行为准则,则移除违规用户。 NPM行为准则https://www.npmjs.com/policies/conduct 以下是你如何发布一个包… https://docs.npmjs.com/getting-started/publishing-npm-packages 于是我开始考虑有人可以做什么坏事…也许创build一个非常有用的包,然后特洛伊木马依赖于一个包做一些坏事。 即使我(作为安装者)审查了我亲自安装的软件包,我也许永远不会收到有问题的代码,特别是如果代码被混淆了,就像这样: eval((new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString())); 这个代码简单地回应/ etc / passwd文件到你的标准输出。 而已。 通过运行这个certificate它: new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString() 那些抓住这个评价的人,对你有好处! 但是,如果没有评估,我可以用很多不同的方式来包装,所以这只是一个例子。 所以,所有这些说…社区做什么来应对这种可能性? 我在哪里可以find更多关于如何保持我的系统安全?

处理/阻止潜在的恶意请求(AWS,Node.js)

我有一个运行在aws上的服务器,它负责平衡运行node.js服务器的一些ec2实例。 安全组被设置为只有LB可以在HTTP端口上击中它们。 我正在拖拽一些日志文件,并看到一堆(每次50个左右,看起来有点周期性)请求/manager/html – AFAIK这看起来像试图揭露我的应用程序中的漏洞或获得访问数据库某种经理。 我的问题是: 我是被定位的还是这些随机爬虫? 这是一个甚至还没有推出的服务,所以它是绝对晦涩的。 关于这项服务有一些新闻,所以一个人知道我们的域名是可行的,但是这个子域名并没有公布。 有没有共同的惯例不允许这些types的请求打我的实例? 最好是,我可以在我的LB中configuration某种频率或黑名单,而不会有这些types的请求碰到一个实例。 不知道如何检测恶意vs正常stream量。 我应该在我的ec2实例上运行本地代理来避免这种types的事情? 是否有任何现有的node.js解决scheme可以拒绝在应用程序级别的请求? 这是一个坏主意吗? 奖励:如果我要logging这些请求的来源,那么这些信息是否有用? 我应该尝试去stream氓,追捕起源,并发送一些伤害他们的方式? 如果是单一来源的,我应该使用机器杀死原始IP吗? (我意识到这很愚蠢,但可能会启发一些有趣的答案)。 目前这些要求并不影响我,他们得到401或404,而且对其他客户几乎没有影响。 但是,如果这是规模上升,我有什么select?

保持用户匿名 – 安全数据库唯一选项 – 一般思路?

我正在研究一个Web应用程序,在那里正在考虑如何保持用户的身份完全匿名。 但是我已经得出结论 ,除了专注于保护数据库免遭黑客攻击之外,我可以做的不多。 这是在StackOverflow的一般共识,还是有我可能错过了任何方法? 所以我想: 然而,直接的encryption哈希和盐会导致与用户联系的各种原因。 密码重置。 我可以保存恢复问题/答案,但当然,答案将需要可读性,以打败事情。 还有一点就是说他们忘记了这些安全问题或我在注册时产生的用户名。 没有办法将他们链接到一个帐户。 还有什么想到(假设我征服了上述)限制重复的用户。 如果我在加工过程中进行哈希/腌制search会相当“沉重”? 我可以简单地保留一个使用的电子邮件的长长的名单,但那么问题再次链接到一个现有的帐户? 有兴趣听到你的想法。 谢谢。