nodejs后端_如何使Nodejs后端安全
nodejs后端
如您所知,如今对于所有类型的初创公司来说,安全性都变得越来越重要。 作为启动所有者,⾸先应注意Web应⽤程序的安全性。 请记住,⽤户信任您的信息,因此您应该专业地关⼼他们的数据,否则,如果有⼈⿊客您的Web应⽤程序并窃取了数据,您将失败并失去客户。
建⽴⼀个Saas业务或众包平台都没关系。
您收集什么样的数据都没有关系。
您必须关⼼平台的安全性。 我们将在本教程中介绍后端安全性。 我们将使⽤带有Express的Node.js来⽀持我们的API。
1.注射
最受欢迎的攻击之⼀是SQL注⼊。 SQL注⼊是⼀种代码注⼊技术,可能会破坏数据库。 ⿊客可以提交这些摘要中的任何⼀个,并使您的数据库崩溃。
' ;DROP TABLE customers; --
此⾏将删除您的客户的完整表格。
'OR 1 = 1 --
该⾏可以通过密码字段提交,并可以访问⽤户数据。
那么如何克服Node.js中SQL注⼊攻击呢?
建议在后端使⽤ORM来处理数据库,例如 但是,请记住,SQL注⼊并不是⿊客可以使⽤的唯⼀注⼊类型。 注⼊意味着通过以⽹站的形式提交那些不好的代码⾏来将外部代码与您的代码混合在⼀起。 克服任何注⼊攻击的最佳⽅法是执⾏以下步骤。
1. 验证数据库中的每个字段
2. 在Node.js控制器中使⽤来验证每个提交的字段
3. 在允许⽤户将数据发送到后端之前,请验证前端中的每个表单。 使⽤Angular,React或Vue.js都没关系。 他们为此提供了⼀个奇妙
且经过充分解释的解决⽅案。
2.仔细检查第三⽅库
请记住,所有第三⽅库都是开源的,并由其他开发⼈员上载。 如果有⼈创建该程序包具有漏洞以供⽇后伤害,该怎么办? 建议检查每个程序包中的可⽤漏洞。 我们使⽤了⼀个名为NSP的软件包,但NPM在2018年收购了它,因此现在它已成为NPM的⼀部分。 您也可以使⽤。
跑
npminstall -g snyk
安装后,您需要使⽤您的Snyk帐户进⾏⾝份验证,然后进⾏测试。
您可能还会注意到,在安装npm软件包时,它会告诉您有关漏洞的信息。 不要忽略它! 赶紧跑
npm audit fix
这将解决⼤多数问题。
3.记录
记录是跟踪您的⽹站访问者以查看他们采取的措施和采取的措施的机会。 访问者如何与您的⽹站互动?
它还提供有关每个访客的其他详细信息。 换句话说,如果某⼈试图在您的⽹站上做⼀件奇怪的事情,您可以通过查看⽇志来获取有关该⼈的更多信息。
对我们来说幸运的是,有2个出⾊的软件包可以⾮常轻松地帮助解决Node.js中的此问题。 您可以使⽤或 。 我更喜欢Morgan,并在以前的项⽬中多次使⽤它。 让我们看看它是如何⼯作的?
⾸先,我们需要安装它:js代码加密软件
npminstall morgan
它只是⼀个中间件,我们需要在index.js中包括以下内容:
app.use(morgan('combined' ));
还有其他⼀些选项也可以很好地⼯作,但是组合的选项为您提供了很多信息。
4.保持环境变量的安全
您可能会使⽤Sendgrid之类的电⼦邮件服务,也可能会使⽤Stripe或Paypal接受付款。 您可以使⽤Twillio进⾏SMS验证。 对于每个这样的服务提供商,您使⽤的API密钥必须保存在安全的地⽅。 最佳
做法是将所有这些API密钥值保存在⼀个名为.env的单独⽂件中。 您可以将这些值分配给变量,然后可以在所需的控制器功能中使⽤。 我将建议使⽤库。 让我们安装它:
npminstall dotenv
然后,当您使⽤.env⽂件中的环境变量时,假定它的名称为stripe_key,那么您只需要在控制器内部使⽤它,如下所⽰:
⽽已。
还有⼀点要注意 :如果您要将该代码公开地推送到Github中,并且还要在⽂档中写出运⾏项⽬所需的API以便其他⽤户可以创建帐户, 请不要忘记在.gitignore中包含.env⽂件。在那些平台上并获得⾃⼰的密钥。
5.设置安全头
具有安全的标头也⾮常重要。 它可以帮助您保护API免受XSS攻击。 这是寻求帮助的地⽅。 这是您应该安装并包含在项⽬的index.js中的另⼀种中间件。
6.为您的API设置访问控制
控制API的访问权限⾮常重要,否则任何⼈都可以访问它并做任何他们想做的事情。 这就是为什么您需要使⽤库来保护您的API的原因。 下⾯是它的⼯作原理:
作为中间件,您应该在index.js中进⾏配置。 它看起来像这样:
const whitelist = [ 'example1' , 'example2' ]
const corsOptions = {
origin : function ( origin, callback ) {
if (whitelist.indexOf(origin) !== -1 ) {
callback( null , true )
} else {
callback( new Error ( 'Not allowed by CORS' ))
}
}
}
app.use(cors(corsOptions));
如您所见,您可以存储您授予权限的域名。 您可以查看官⽅⽂档以了解其完整实施。
7.数据库管理
另⼀个重要的事情是对数据库中的密码进⾏哈希处理,因此没有⼈可以获取所存储密码的真实值。 当然,可能还需要散列另⼀个字段,但是最常见的字段是密码字段。
最受欢迎的库是这两个库:
加密货币
8.认证管理
⾝份验证管理是确保站点安全的最重要因素之⼀。 它可以帮助您管理⽤户的季节并了解可以访问哪些数据和页⾯类型? 如今,最受欢迎的解决⽅案是使⽤ 。 由于它是⼀个⼤⽽不同的主题,因此在本教
程中我们将不涉及其集成,但是可以在Internet上到许多有关JWT实现的教程。
9.使⽤HHTPS
如今,SSL证书已成为运⾏在线业务的⾮常流⾏且必不可少的东西。 有很多出售这些证书的证书颁发机构,但是您可以使⽤2个免费选项:
Cloudflare众所周知是CDN,但它也可以将您的站点转换为HTTPS并保护其免受DDoS攻击。
结论
确保您⽹站的安全是⼀个常规过程,您应该定期关⼼它,以发现新的漏洞并加以修复。
nodejs后端
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论