节点js保护应用程序的技术或步骤

时间:2018-04-23 07:29:23

标签: node.js mongodb security

我是这类工作的新手,我需要有关保护应用程序免遭攻击的技术或步骤的步骤和信息。

目前,我正在使用Nodejs构建应用程序,我的数据库是MongoDB。

我觉得我的应用程序不够安全,不能在生产中部署。

感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用

1.要检查各个npm模块是否存在已知漏洞,Node Security Project提供了nsp工具来检查漏洞:

$ nsp check

2.Synk针对Snyk的开源漏洞数据库检查应用程序是否存在依赖项中的任何已知漏洞。

$ npm install -g snyk
$ cd your-app
$ snyk test

3.为了防止我们的网站被大量请求压倒,我们需要对我们的API进行某种速率限制。

const RateLimit = require('express-rate-limit');

const limiter = new RateLimit({
  windowMs: 15*60*1000, // 15 minutes 
  max: 100, // limit each IP to 100 requests per windowMs 
  delayMs: 0 // disable delaying — full speed until the max limit is  reached
});

//适用于所有请求 app.use(限制器); 4.验证和清理用户数据是使用像validator.js这样的库。

5.可以通过jwt,bcrypt,crypto

完成身份验证

6.使用必要的HTTP标头实现头盔保护您的应用程序。默认情况下,头盔可帮助您应用标题。 例如: -

app.use(helmet.hsts({   maxAge:6666666777,   includeSubdomains:true }));

通过适当设置HTTP标头,Helmet可以帮助保护您的应用免受一些众所周知的网络漏洞的影响。

Helmet实际上只是九个较小的中间件函数的集合,它们设置了与安全相关的HTTP头:

  • csp 设置Content-Security-Policy标头,以帮助防止跨站点脚本攻击和其他跨站点注入。

    hidePoweredBy 删除X-Powered-By标头。 hpkp添加公钥固定标头以防止伪造的中间人攻击 证书。

    hsts 设置Strict-Transport-Security标头,强制实施与服务器的安全(HTTP over SSL / TLS)连接。

    ieNoOpen 为IE8 +设置X-Download-Options。

    noCache 设置Cache-Control和Pragma标头以禁用客户端缓存。

    noSniff 设置X-Content-Type-Options,以防止浏览器从声明的内容类型中嗅探响应。

    frameguard设置X-Frame-Options标头以提供点击劫持 保护。

    xssF​​ilter 设置X-XSS-Protection以启用跨站点脚本(XSS) 在最近的网络浏览器中过滤。

app.use(helmet.xframe(' allow-from',' http://example.com'));

  1. 使用开源 sqlmap 工具检测应用中的SQL注入漏洞 http://sqlmap.org/
  2. 8.需要适当使用set cookie安全选项

    var session = require('cookie-session')
    var express = require('express')
    var app = express()
    
    var expiryDate = new Date(Date.now() + 60 * 60 * 1000) // 1 hour
    app.use(session({
      name: 'session',
      keys: ['key1', 'key2'],
      cookie: {
        secure: true,
        httpOnly: true,
        domain: 'example.com',
        path: 'foo/bar',
        expires: expiryDate
      }
    }))
    

    请参考

    https://expressjs.com/en/advanced/best-practice-security.html

    https://geekflare.com/nodejs-security-scanner/

    https://nodesource.com/blog/the-state-of-node-js-security-in-2017

答案 1 :(得分:2)

你可以参考这篇文章。 你可以添加更简单的头盔包。 https://blog.risingstack.com/node-js-security-checklist/