微信小程序 安全指引-通用


本文整理自网络,侵删。

通用

接口鉴权

接口鉴权是指后台接口(包括自建后台接口与云函数)在被调用时需要对本次接口调用进行权限校验,否则容易发生越权行为。如商品删除接口,后台在收到请求时应当校验调用者的身份信息(如 openid、 ip 地址、开发者自定义的登录信息等),只有指定用户才可以通过校验进行删除。

越权通常分为平行越权和垂直越权:

  • 平行越权 
    平行越权是指相同角色之间的越权。 A1、 A2 都是普通用户, A1 通过请求后台接口 userinfo.php?id=A1 来获取用户 A1 自己的信息,如果 userinfo.php 没有进行权限校验,用户 A1 把请求改为 userinfo.php?id=A2 便可以获取到 A2 用户的信息,造成 A2 用户信息的泄露。
  • 垂直越权 
    垂直越权是指不同角色之间的越权。 B1 是管理员, B2 是普通用户,管理员 B1 通过请求后台接口 getalluserinfo.php 可以获取所有注册用户的信息,如果 getalluserinfo.php 没有进行权限校验, B2 用户也可以请求 getalluserinfo.php 来获取所有注册用户的信息,出现越权行为。

开发建议:

  1. 敏感数据、能力相关接口需要在后台进行鉴权。通常可校验 openid、 IP 地址、自定义登陆态等信息。
  2. 鉴权逻辑应放在后台进行,不应在小程序前端以隐藏页面、隐藏按钮等方式来代替。参照原则4。
  3. 鉴权代码示例(仅供参考)
    1. 自建后台鉴
      function actionDelete(){
          $item_id = $_POST["item_id"]; 
          $openid = $_POST["openid"];
          $ip = $_SERVER['REMOTE_ADDR'];
          $user_role = $_SESSION["user_role"];
          if ($openid === "xxx" &&
              $ip === "192.168.0.101" &&
              $user_role === "admin") {
                  // 进行删除操作
                  // ...
                  return 0;
              } else {
                  // 记录非法请求
                  // ...
                  return -1;
              }
      }
    2. 云函数接口鉴权

      exports.main = async (event, context) => {
          const { OPENID, APPID, UNIONID } = cloud.getWXContext();
          if (OPENID === "xxx") {
              // 进行删除操作
              // ...
          } else {
              // 记录非法请求
              // ...
          }
      }

    代码管理与泄漏

    1. 当使用 git、 svn 等版本管理工具时,会产生 .git 等目录。某些编辑器或软件也会在运行过程中生成临时文件。若这些目录或文件被带到生产环境,则可能发生源码泄漏。
    2. 使用小程序代码管理平台或 github 等第三方平台时需要注意项目权限,不要公开敏感、内部项目。

    开发建议:

    1. 备份文件和版本管理工具产生的文件不要同步到 Web 目录下。
    2. 禁止外部访问 .git 等目录与文件。
    3. 在小程序代码管理平台等管理平台内配置适当的访问权限。

    小程序

    信息泄露

    敏感信息是指一旦泄露可能会对开发者的业务、合作伙伴和用户带来利益损害的数据,包括但不限于帐号 Appsecret、特权帐号信息、后台加密密钥、登录账户密码、用户身份证号、手机号、银行卡号等。

    阅读剩余部分

    相关阅读 >>

    微信小程序开放数据 official-account

    微信小程序云开发 介绍

    微信小程序工具 下载地址

    微信小程序设计规范(1) 友好礼貌

    sdk数据库 collection索引

    微信小程序云开发sdk文档 微信支付查询退款

    微信小程序工具 创建插件项目

    微信小程序表单组件 checkbox

    微信小程序api 数据自定义数据上报

    微信小程序 自定义组件扩展

    更多相关阅读请进入《微信小程序》频道 >>




    打赏

    取消

    感谢您的支持,我会继续努力的!

    扫码支持
    扫码打赏,您说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    分享从这里开始,精彩与您同在

    评论

    管理员已关闭评论功能...