Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Node / Express – 客户端/服务器之间安全通信的良好方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Node / Express构建一个后端API,它从MongoDB获取数据.前面将用React编写.

我想保护通信客户端/服务器,但我不知道如何虑这个过程.

我看到很多关于护照或JWT的教程,但这对于用户身份验证很有用.

我不知道是否根据时间(例如)为每个请求创建一个令牌是一种好方法,或者它对于一个Web应用来说太费劲了.

但我的目标是保护数据,因为即使API是私有的,您也可以轻松找到路线,并尝试弄清楚如何伪造请求与Postman或别的东西来废弃数据.

解决方法

接受的标准是使用固定的API KEY.这种信息的和平应该是一个随机生成的字符串,您可以在标题中的每个请求中发送.您的服务器每次都必须检查http请求以查看标头中是否存在API KEY,如果是,则必须检查环境变量中的存储值(从不将API KEY存储在代码中).

如果API KEY受到损害,那么您可以轻松更新env变量,并且您再次表现良好.

现在,如果没有httpS连接,这个解决方案将毫无意义,因为任何人都可以嗅探流量并查看API KEY.在这种情况下,必须使用加密连接.

几乎所有拥有公共API的公司都使用这种方法:Twitter,Facebook,Twilio,Google等.

例如谷歌有一个额外的步骤,他们会给你一个将过期的令牌,但这将是你的情况下的过度杀戮:至少在开始时.

以下代码是我执行API KEY检查的示例

app.use(function(req,res,next) {

    //
    //  1. check if the APIKey is present
    //
    if(!req.headers.authorization)
    {
        return res.status(400).json(
            {
                message: "Missing APIKey.",description: "Unable to find the APIKey"
            }
        );
    }

    //
    //  2. Remove Basic from the beginning of the String
    //
    let noBasic = req.headers.authorization.replace('Basic ','');

    //
    //  3. Convert from base64 to String
    //
    let b64toString = new Buffer(noBasic,'base64').toString("utf8");

    //
    //  4. Remove the colon from the end of the String
    //
    let userAPIKey = b64toString.replace(':','');

    //
    //  5. check if the APIKey matches the one on the server side.
    //
    if(userAPIKey != process.env.API_KEY)
    {
        return res.status(400).json(
            {
                message: "APIKey don't match",description: "Make sure what you are sending is what is in your server."
            }
        );
    }

    //
    //  -> Go to the next stage
    //
    next()

});

您可以使用整个实现hear检查整个文件.

大佬总结

以上是大佬教程为你收集整理的node.js – Node / Express – 客户端/服务器之间安全通信的良好方法全部内容,希望文章能够帮你解决node.js – Node / Express – 客户端/服务器之间安全通信的良好方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。