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



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

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

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

谢谢。

您可以使用

1.To 检查各种 npm 模块是否存在已知漏洞,节点安全项目提供了 nsp 工具来检查漏洞:

$nsp check

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

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

3.To 防止我们的网站被大量请求压倒,我们需要对我们的 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(limiter); 4. 验证和清理用户数据就是使用像 Validator.js 这样的库。

5.身份验证可以通过JWT,bcrypt,加密来完成

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

app.use(helmet.hsts({ 最大年龄: 6666666777, 包含子域:真 }));

头盔可以通过适当设置 HTTP 标头来帮助保护应用免受一些众所周知的 Web 漏洞的影响。

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

  • CSP设置内容安全策略标头,以帮助防止跨站点脚本攻击和其他跨站点注入。

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

    hsts设置严格传输安全标头,用于强制与服务器建立安全(HTTP over SSL/TLS)连接。

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

    noCache设置缓存控制和 Pragma 标头以禁用客户端缓存。

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

    帧卫士设置 X-帧选项标题以提供点击劫持 保护。

    xssFilter设置 X-XSS-Protection 以启用跨站点脚本 (XSS) 在最新的 Web 浏览器中进行筛选。

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

  1. 使用开源sqlmap工具检测应用中的 SQL 注入漏洞 http://sqlmap.org/

8.需要适当使用设置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

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

最新更新