Tag: expression

节点Express Regex检测无效字符

我们使用Node模块Crypto和Express来提供一些查询string和表单名称混淆。 'use strict'; var algorithm = 'aes-256-ctr' , crypto = require('crypto') ; var enc = function(string, key){ var cipher = crypto.createCipher(algorithm, key); var buff = Buffer.from(string, 'utf8'); return Buffer.concat([cipher.update(buff), cipher.final()]).toString('hex').toUpperCase(); }; var dec = function(string, key){ var decipher = crypto.createDecipher(algorithm, key); var buff = Buffer.from(string, 'hex'); return Buffer.concat([decipher.update(buff), decipher.final()]).toString('utf8'); }; 使用的密钥很可能是一个随机的会话GUID,所以只要该会话有效,查询string就会有效。 我看到的问题是,如果一个会话GUID是不同于编码string,该函数仍然会解密hexstring,但结果将是无效的。 是否有正则expression式string(用于检测string中是否返回了任何非有效字符)或其他方式来确定是否使用了不同于其原始键的string来解码string? 我将很快创build一个快速中间件,它会查看每个传入的请求,并确定是否需要parsingreq.query或req.form,并尝试确定查询string是否正确解密。

在mongodb / node中存储敏感数据

我正在开发一个项目,要求我的networking应用程序从用户那里收集敏感信息(例如驾照的照片)。这是通过在Angular上进行file upload完成的,我计划将这些图像作为二进制数组存储在MongoDB中。 我也在考虑直接在服务器上使用node.js(busbuy或fs我相信)来存储图像,并在服务器中存储图像的引用(在两种情况下,API点都实现了适当的访问控制)。问题是。我不知道这两种方法会有多安全。 像密码一样,我不认为存储敏感数据(DL,SSN)的“原始/原始”图像在任何意义上都是安全的。 什么是保护敏感图像在服务器上存储的方法?

循环通过asynchronous请求

所以我有以下代码循环通过一个对象: for(var x in block){ sendTextMessage(block[x].text, sender, function(callback){ //increment for? }) } 对于每个迭代,我想要做一个请求(发送一个facebook消息),只有在请求完成后,我想通过下一个迭代,这是因为没有任何callback,消息将不会被正确的连续发送。 function sendTextMessage(text, sender, callback) { let messageData = { text:text} request({ url: 'https://graph.facebook.com/v2.6/me/messages', qs: {access_token:token}, method: 'POST', json: { recipient: {id:sender}, message: messageData, } }, function(error, response, body) { if (response.statusCode >= 200 && response.statusCode < 300){ if(callback) callback('success') } }) } […]

Angular和NodeJS使用参数获取请求url只返回响应对象no组件HTML

我有一个像例如'localhost:3000 / verify / a5d5sd'的URL,我发送到用户的电子邮件,点击这个链接后,我在链接中使用param(a5d5sd)来检查服务器中的一些东西,数据库(MongoDB)并返回一个对象的响应,现在当链接被点击或打开一个新的标签时,我只能看到来自服务器的响应,而不是来自我的Angular 2组件的HTML。 在我的Angular 2路由configuration模块中,我configuration了一个类似的路由 { path: 'verify/:id', component: MyComponent }, 而在这个组件的ngOnInit,我打电话给一个服务方法,使GET HTTP请求与URL像validation/:ID 帕拉姆(:ID)我得到它使用@ angular /路由器的ActivatedRoute,使我可以请求。 为了解决这个问题,我被build议为我的快递使用以下代码: app.use(express.static(path.join(__dirname, 'client/dist'))); app.get('*', function(req, res) { res.sendFile(__dirname + '/client/dist/index.html'); }) 甚至尝试过: app.all('*', function(req, res) { res.sendFile(__dirname + '/client/dist/index.html'); }) 此代码适用于直接导航(在search栏上粘贴URL),并仅刷新POST和PUT请求,但不能与GET请求一起使用,这些请求需要服务器端的响应,当我直接访问URL或刷新页面时,DOM写与服务器响应,但不是HTML,任何帮助将不胜感激。

响应问题与callback

我想我在这里错过了一些简单的东西,但是我认为我已经看了太久了。 我最初有你在这里看到的函数内联,但想拉出来,并在我的应用程序的其他方面使用它,但我似乎无法得到预期的信息到POST响应。 这是我的function: let lookUpUserId = (x) => { mongo.connect(url, (err,db) => { assert.equal(null,err); db.collection('data').findOne({"email": {'$eq' : x }},{"_id":1}, (err,result) => { console.log(result); // I'm getting the correct response here. assert.equal(null,err); db.close(); return result; // This seems to be returning empty }); }); }; 现在,这是我打电话给它的地方(简体): router.post('/test1', (req,res,next) => { console.log('Hit on POST /test1'); let obj […]

NodeJS / Express + HTTPS:如何将密钥和证书部署到AWS EC2节点?

Node.js&Express.js是我用来编写Web API服务的新手。 要启用HTTPS,服务使用以下代码: const server = https .createServer({ key: fs.readFileSync('./cert/myservice.key'), cert: fs.readFileSync('./cert/myservice.crt') }) .listen(serverConfig.server.port, () => logger.info(`MyService is up and running`)); 很容易看出,这段代码假设.key和.crt文件在服务应用程序位置本地可用。 如果我想将服务部署到单个AWS EC2主机(为了简单起见),这些文件将不得不在那里,这似乎不是一个安全的解决scheme。 我正在考虑使用AWS IAM来保护这些秘密。 问题在于无法直接从IAM“部署”/将密码提供给EC2节点。 我不得不使用IAM的API来获取秘密,但问题是如何使EC2上的AWS凭证可用。 问题:是否有build议的安全方式将密钥(包括证书和密钥)部署到AWS EC2节点?

我怎么能检查它是否是一个12字节的String对象,MongoDB中的ObjectID?

我想检查一个正确的ObjectID来继续我的代码。 我在NodeJS上,我不想得到这个错误: 错误:传入的参数必须是12个字节的单个string或24个hex字符的string 其实我有这些testing: if (!user.id || !user.id.match("/^[0-9a-fA-f]{24}$") || !typeof(user.id) === 'string') { console.log("user id is required !") return callback("user id is required !") } 对于24个hex字符的string,我得到这个正则expression式: !user.id.match("/^[0-9a-fA-f]{24}$") 我正在检查它是否是一个12字节的string: !typeof(user.id) === 'string' 我应该如何为12个字节添加validation? 有什么想法吗?

Nodejs Express多个callback错误

我正在使用Nodejs Express自制RBAC系统,基于两个层次: 首先,validation用户是否有正确的angular色来执行此操作。 其次,validation用户是否有正确的计划来执行此操作。 ,我创build了一个这样的中间件: exports.can = function (resource, action) { return function (request, response, next) { action = action || request.method; if (!request.user) { return next(new errors.UnauthorizedError()); } request.user.can(request.user.role, request.user.currentPack, resource, action, function (can, error) { if (error) return next(error); if (!can) { return next(new errors.UnauthorizedError()); } return can; }); return next(); }; }; […]

返回值调用方法

我为我的ExpressJS项目使用Sequelize。 我在我的模型中有这个代码: exports.findAll = () => { let data = []; Book.findAll().then(books => { data = books; // book has array of objects }); return data; // but data doesn't have even after assigning books to data }; 我想方法findAll返回值由BookController调用时 。

将整个用户放在一个会话中是否安全,而仅仅是node / express的用户ID?

我正在使用节点/快递,并想知道是否可以安全地把整个用户对象在会议而不是只是Id 。 如果我只是做了这个Id那么这意味着当我去获取当前的用户时,我必须再打一个数据库调用。 我看到有人这样做,但如果把Id放在一个更安全的地方,那么我会去做这件事。 我应该声明,我将把用户的密码附加到会话或任何其他敏感数据之前。