微搭低代码密码加密存储

简介: 微搭低代码密码加密存储



我们在用户登录注册部分,给出了用户注册的例子。但是有一个问题,密码是在数据库中明文存储的,很容易就被破解。为了提高登录的安全性,我们本次讲解一下如何解决密码的加密存储。

1 加密密码

通常密码的加密行为在后端完成,微搭中后端逻辑是在API中完成编辑的。登录控制台,点击APIs,点击+号添加API

选择云开发云函数

输入云函数的名称

点击编辑APIs方法

点击管理云函数

点击新建云函数

输入云函数的名称,完成创建

点击保存并安装依赖

复制弹出窗口的内容

点击文件-》新建文件

输入package.json

添加加密的依赖包,具体文件内容如下:

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@cloudbase/node-sdk": "latest",
    "crypto-js":"latest"
  }
}

输入完毕后再次点击保存并安装依赖

然后在index.js中输入如下代码

'use strict';
exports.main = async (event, context) => {
    const CryptoJS = require('crypto-js');
    const key = CryptoJS.enc.Utf8.parse('密钥');
    const password = event.password
  // 加密密码
  const encryptedPassword = CryptoJS.AES.encrypt(password, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return {password:encryptedPassword.toString()};
};

输入完毕后点击测试

输入运行入参,点击运行测试

看到测试成功就表明你的函数是正常运行了

云函数测试成功后再回到微搭的控制台来,选择我们创建的云函数

然后添加入参

入参添加好之后点击方法测试

看到测试成功后点击出参自动映射我们的API就加好了

2 密码存入用户表中

密码加密之后,我们需要存入数据源中,再按上述的方法添加一个API方法

这次我们选择自定义代码

输入如下代码

/**
* 使用 npm 包 node-fetch 发送http请求, 详细使用文档可以参考
*  https://github.com/node-fetch/node-fetch
*/
module.exports = async function (params, context) {
  const resultEncryptPassword = await context.callConnector({
    name: 'userauth_spbuo7r',
    methodName: 'encryptPassword',
    params: {
      password:params.password
    }, // 方法入参
  });
 const result = await context.callModel({
    name: 'zcyh_hh2jizk', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
    methodName: 'wedaCreate', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
    params: {
      yhm:params.username,
      mm:resultEncryptPassword.password
    }, // 数据模型方法的入参
  });
  // 这里返回数据,和出参结构映射
  return result;
};

我们代码的逻辑是先把密码加密,然后存入数据源中。点击方法测试,看一下结果

找到我们的用户注册数据源,可以看一下最终的结果

可以看到密码已经在数据源中加密存储了。API做好之后,我们在用户注册的时候,就不是使用系统自带的提交方法,需要调用一下我们的API

这里主要注意入参构造这一块

({username:$w.input1.value,password:$w.input2.value})

调用API方法的时候需要传入入参,参数的值我们需要获取一下表单字段的输入值

总结

我们本篇主要介绍了用户加密存储的过程,涉及到云函数如何创建、编写、测试和调用。在低代码开发中,后端逻辑的编写也是必要的,这一块主要还是沿用了云开发的内容,所以熟练掌握云开发的技能也是低代码开发必备的。

相关文章
|
5月前
|
前端开发 JavaScript 数据安全/隐私保护
Jmeter模拟加密密码登录
Jmeter模拟加密密码登录
115 0
|
3月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
113 0
|
1月前
|
存储 安全 数据安全/隐私保护
oss数据加密与存储
阿里云OSS提供多种数据加密(SSE-S3, SSE-KMS, SSE-C, CSE-KMS)与存储安全措施,包括服务器和客户端加密、数据在磁盘上加密存储、多重冗余备份、访问控制列表和HTTPS安全传输。KMS支持密钥管理,确保数据静态和传输时的安全。严格的访问策略和身份验证保护资源免受未授权访问,满足高安全性和合规性需求。
43 3
|
1月前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
143 0
|
1月前
|
存储 运维 Nacos
nacos常见问题之连接用户名和密码把明文用户名和密码进行加密如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
192 2
|
5月前
|
druid Java 数据库
德鲁伊druid数据库明文密码加密
德鲁伊druid数据库明文密码加密
376 0
德鲁伊druid数据库明文密码加密
|
1月前
|
应用服务中间件 Nacos 数据安全/隐私保护
nacos常见问题之如何用明文密码做加密
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
119 0
|
3月前
|
安全 算法 Java
spring security 如何对密码进行加密
spring security 如何对密码进行加密
|
3月前
|
存储 JSON 安全
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
95 0