Articles of 安全性

处理/阻止潜在的恶意请求(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会相当“沉重”? 我可以简单地保留一个使用的电子邮件的长长的名单,但那么问题再次链接到一个现有的帐户? 有兴趣听到你的想法。 谢谢。

如何在受限制的互联网访问环境中使用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 […]