Tag: 安全

如何在nodjes服务器中使用Kerberos?

我需要将.net kerberos应用程序迁移到nodejs环境。 该应用程序当前接收来自.net客户端的传入请求,并基于域和领域内的用户,如果通过身份validation以使用服务,则会为其提供spgeno令牌。 客户端然后将这个令牌用于所有对web服务的请求。 我想在nodejs中复制,但是这些模块要么是logging不完善的https://github.com/christkv/kerberos&https://github.com/auth0/kerberos-server ,要么专注于客户端kerberos而不是服务器方面的用法。 我不知道C ++,否则我会写绑定到C / C ++接口,所以我可以从JavaScript代码调用。 有没有人有关于如何进行迁移的build议? 有什么好的资源或模块可以用来帮助我吗?

Websocket握手,JWT了解安全

嗨,我试图了解这个握手如何工作和智威汤逊。 所以我有一些网页的东西,一些用户可以去login自己。 然后我创build一个JWT,所以当我向服务器请求时,我使用这个令牌来validation用户。 我想创build和websoket连接,并使用这个令牌。 所以我做了这样的服务器 var server = app.listen(3000, function(){ console.log('Server listening on', 3000); }); require('./websockets').connect(server); 在那个文件websockets.js我有 var _ = require('lodash') var ws = require('ws') var url = require('url') var jwt = require('jwt-simple') var config = require('./config') var clients = []; exports.connect = function(server){ var wss = new ws.Server({server:server}); wss.on('connection', function(ws){ var location = url.parse(ws.upgradeReq.url, […]

产品生态系统中的身份validation和授权

我有一个由多个产品组成的产品生态系统,例如:angular度应用程序,网站和混合应用程序,所有这些应用程序都由节点后端供电。 所以,现在我想为整个生态系统添加一个单一的authentication和授权,也需要模块化和可扩展性。 另外,我正在遵循三层架构,即: [APPLICATION] – > [API] – > [DB] ,只有可访问数据库的API层。 现在我也希望身份validation和授权是另一个应用程序在生态系统,可以插入到其他应用程序和使用没有太多的设置。 另外,由于它是(身份validation和授权模块)另一个应用程序,我不希望它直接访问数据库,我希望它做API调用,再加上它不应该使用像auth0第三方authenticationscheme。 重要的是除了身份validation和授权模块之外的应用程序都不应该有任何身份validation相关的逻辑。 基本上这应该是模块比插入时允许身份validation和授权和无缝集成。 这个设置是可能的吗? 如果是这样,我该怎么办呢? 如果不是authentication和授权在其他生产级生态系统中是如何实现的? 提前致谢!

Nodejs createCipher vs createCipheriv

我目前正在尝试使用createCipher来encryption数据,我已经阅读了Node API文档, build议不要使用 createCipher 。 crypto.createCipher()的实现使用OpenSSL函数EVP_BytesToKey以摘要algorithm设置为MD5的方式派生密钥,一次迭代并且不加盐。 盐的缺乏使字典攻击成为可能,因为相同的密码总是会产生相同的密钥。 低迭代次数和非密码安全散列algorithm允许密码被快速testing。 根据OpenSSLbuild议使用pbkdf2而不是EVP_BytesToKey,build议开发人员使用crypto.pbkdf2()自己派生密钥和IV,并使用crypto.createCipheriv()创buildCipher对象。 createCipher仍然是一个可行的和安全的方式来encryption静止的数据? 该方法是否应该被视为弃用? 信息充分的攻击者是否可以解密数据? 应该使用createCipheriv的解决scheme总是优于createCipher ? 任何其他细节或build议表示赞赏。

Node.js / Websockets – 为服务器添加安全性 – html客户端连接

我使用node.js和ws模块创build了一个websocket服务器: var options = { port: 8080, key: fs.readFileSync('ssl/key.key'), cert: fs.readFileSync('ssl/cert.cert'), ca: fs.readFileSync('ssl/ca.pem'), requestCert: false, rejectUnauthorized: true } var processRequest = function(req, res) { console.log("Request received.") }; var server = https .createServer( options, processRequest) .listen(options.port, function(){ console.log("HTTPS server created and listening to port " + options.port); }); var wss = new WebSocket.Server ({ server: server […]

有没有办法从node.js调用Google Keyczar?

我需要在我的应用程序中使用node.js生成一些HMAC服务器端。 Node在其encryption类中提供了HMACfunction: http://nodejs.org/api/crypto.html#crypto_class_hmac 然而,keyczar还有其他一些function,特别是关键的轮换和pipe理。 有没有人find了从node.js使用keyczar的方法,或者在node.jsencryption之上实现了一个密钥滚动策略?

如何保护Node.JSnetworkingsoket服务器免受连接炸弹?

任何人都可以请求连接到由端口80上启动的由Node.JS编写的实时应用程序服务器。 这意味着任何人都可以发送大量的curl请求来炸弹我的套接字服务器导致连接溢出。 任何方式来检测curl请求,并拒绝他们? 谢谢。

expression密钥长度

是否有任何关于密码散列连接/expression会话数据的密钥长度的build议? 我看到从60多个string到规范的“键盘猫”的一切。 对于我的直接用例,我打算在整个站点上使用SSL,并且暴力攻击的回报是中等到低的。

meteor – 检查用户是否以pipe理员身份login(客户端)

我目前正在开发一个需要用户和pipe理员的应用程序。 我现在所做的是,我在客户端上创build一个pipe理员帐户,用户名“admin”和一个默认密码,应该通过accounts-ui进行更改。 我这样做是因为创build一个像这样的用户: Accounts.createUser({ username : 'admin', email : 'test@test.com', password : 'changethispasswordovertheuserinterface', profile : { type : 'admin' } }); 在服务器端对我不起作用。 这意味着我只是在我的client.js创buildpipe理员,只是使用此代码来检查pipe理员是否login。 Template.admin.isAdmin = function () { var currentUser = Meteor.user(); // Is this hackable? if (null !== currentUser) { if ('admin' === currentUser.username) { return true; } } }; 这是处理这个问题的最好方法吗? 而最重要的是,我的网站可以像这样(可以有人伪造)?

使用生产代码部署configuration文件

在尝试将使用Git的Node.js服务器部署到Amazon Elastic Beanstalk实例时,我开始想知道,推送一个configuration文件并让它位于远程磁盘上是一种更安全/有效的做法。 我现在执行的一系列操作来获取生产代码如下: 在git上创build一个本地“生产”分支。 不要忽略我的config.js文件,其中包含敏感的数据库信息 – 每次更新时重复以下步骤 混帐主混帐 git aws.push(或者一些类似的'push'命令来更新上游文件) 这个stream程似乎很简单,但我想知道是否有一个更安全的方式,我的configuration文件不会存在于我的远程服务器的磁盘上,而是在内存中 – 如果服务器的敏感信息希望不再存在停止跑步。 在远程磁盘上不存在这个configuration文件的动机是,如果服务器被攻破,那么至less它将与数据库分开。 有没有解决这个问题的stream程,或者人们通常走设置环境variables的路线和/或使用新分支推送configuration文件? 任何有关这个问题的见解将不胜感激。