Node.js 保护应用程序安全的Node js技术或步骤
我是这类工作的新手,我需要关于保护应用程序免受黑客攻击的技术或步骤的步骤和信息 目前,我正在使用Nodejs构建一个应用程序,我的数据库是MongoDB 我觉得我的应用程序不够安全,无法在生产环境中部署Node.js 保护应用程序安全的Node js技术或步骤,node.js,mongodb,security,Node.js,Mongodb,Security,我是这类工作的新手,我需要关于保护应用程序免受黑客攻击的技术或步骤的步骤和信息 目前,我正在使用Nodejs构建一个应用程序,我的数据库是MongoDB 我觉得我的应用程序不够安全,无法在生产环境中部署 谢谢。你可以参考这篇文章。 您可以添加更简单的头盔包。 .您可以使用 1.为了检查各种npm模块是否存在已知漏洞,节点安全项目提供了nsp工具来检查漏洞: $nsp支票 2.Synk根据Snyk的开源漏洞数据库检查应用程序是否存在依赖项中的任何已知漏洞 $ npm install -g snyk
谢谢。你可以参考这篇文章。 您可以添加更简单的头盔包。 .您可以使用 1.为了检查各种npm模块是否存在已知漏洞,节点安全项目提供了nsp工具来检查漏洞: $nsp支票 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.uselimiter;
4.验证和清理用户数据需要使用类似validator.js的库
5.身份验证可由jwt、bcrypt、crypto完成
6.使用必要的HTTP头保护您的应用程序。默认情况下,头盔可帮助您应用标题。
例如:-
app.usehlmet.hsts{
最大年龄:66666777,
includeSubdomains:true
};
头盔可以通过适当设置HTTP头帮助保护您的应用程序免受一些众所周知的web漏洞的攻击
头盔实际上只是九个较小的中间件函数的集合,用于设置与安全相关的HTTP头:
csp设置内容安全策略头以帮助防止跨站点脚本攻击和其他跨站点注入
hidePoweredBy删除X-POWER-By标头。hpkp添加了公钥钉扎头,以防止中间人攻击
证书
hsts设置严格的传输安全标头,该标头通过SSL/TLS将安全HTTP连接到服务器
ieNoOpen为IE8+设置X下载选项
noCache设置缓存控制和Pragma头以禁用客户端缓存
noSniff设置X-Content-Type-Options以防止浏览器从声明的内容类型嗅探响应
frameguard将X-Frame-Options标题设置为提供点击功能
保护
xssFilter将X-XSS-Protection设置为启用跨站点脚本XSS
在最新的web浏览器中进行筛选
app.useharm.xframe'allow-from'
使用开源sqlmap工具检测应用程序中的SQL注入漏洞
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
}
}))
请参阅
查看23+Node.js安全最佳实践。