【发布时间】:2018-04-23 07:29:22
【问题描述】:
我是这种工作的新手,我需要有关防止应用程序被黑客入侵的技术或步骤的步骤和信息。
目前,我正在使用 Nodejs 构建一个应用程序,我的数据库是 MongoDB。
我觉得我的应用不够安全,无法部署到生产环境中。
谢谢。
【问题讨论】:
-
查看超过 23 个 Node.js 安全最佳实践。 medium.com/@nodepractices/…
我是这种工作的新手,我需要有关防止应用程序被黑客入侵的技术或步骤的步骤和信息。
目前,我正在使用 Nodejs 构建一个应用程序,我的数据库是 MongoDB。
我觉得我的应用不够安全,无法部署到生产环境中。
谢谢。
【问题讨论】:
你可以使用
1.为了检查各种npm模块的已知漏洞,节点安全项目提供了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(头盔.hsts({ 最大年龄:6666666777, 包括子域:真 }));
Helmet 可以通过适当地设置 HTTP 标头来帮助保护您的应用免受一些众所周知的 Web 漏洞的影响。
Helmet 实际上只是设置与安全相关的 HTTP 标头的九个较小的中间件函数的集合:
csp 设置 Content-Security-Policy 标头以帮助防止跨站点脚本攻击和其他跨站点注入。
hidePoweredBy 删除 X-Powered-By 标头。 hpkp 添加公钥固定标头以防止伪造的中间人攻击 证书。
hsts 设置 Strict-Transport-Security 标头,强制与服务器建立安全(基于 SSL/TLS 的 HTTP)连接。
ieNoOpen 为 IE8+ 设置 X-Download-Options。
noCache 设置 Cache-Control 和 Pragma 标头以禁用客户端缓存。
noSniff 设置 X-Content-Type-Options 以防止浏览器 MIME 嗅探远离声明的内容类型的响应。
frameguard 设置 X-Frame-Options 标头以提供点击劫持 保护。
xssFilter 设置 X-XSS-Protection 以启用跨站点脚本 (XSS) 在最新的网络浏览器中过滤。
app.use(helmet.xframe('allow-from', 'http://example.com'));
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/.
【讨论】: