美文网首页Vue
小程序开发的内容安全审核

小程序开发的内容安全审核

作者: 97690CE50CC872D | 来源:发表于2019-11-22 17:38 被阅读0次

    最近做一个带图片和文字发布的微信小程序,当时心里犯嘀咕,没有自我审查估摸着上不了。果不其然微信小程序提交代码审核的时候,审核不通过,提示如下:为避免您的小程序被滥用,请你完善内容审核机制,如调用小程序内容安全API,或使用其他技术、人工审核手段,过滤色情、违法等有害信息,保障发布内容的安全。
    得,去到后台一看,审核员测试了一个词xxx给显示出来了,直接导致小程序不通过。

    image

    好在提示给了解决方案,因此这里做一下记录。

    调用小程序内容安全API

    还挺全,我主要用到了图片和文字审查,所以对security.imgSecChecksecurity.msgSecCheck的使用做记录。

    image

    开通云开发

    在微信开发者工具打开你的小程序工程,点击“云开发”菜单进去,之前没开的按照提示填写云开发环境名称就好。

    image

    创建云函数

    在你小程序工程的app.js同级目录下创建一个文件夹functions来存放云函数

    image.png

    并在project.config.json中配置"cloudfunctionRoot": "functions/",

    {
      "description": "项目配置文件",
      "cloudfunctionRoot": "functions/",
      "packOptions": {
        "ignore": []
      }, ...
    .......
    
    image

    编译一下,可以看到functions文件夹有变化后面加上了你之前创建的环境名。右键functions文件夹唤出菜单新建Node.js云函数

    image

    我这里创建了一个名称叫ContentCheck的云函数,调用security.imgSecChecksecurity.msgSecCheck需要声明权限,需要配置一个config.json文件,如果目录文件中没有config.json,需要自己建一个。

    image.png

    config.json的配置如下:

    {
        "permissions": {
            "openapi": [
                "security.msgSecCheck",
                "security.imgSecCheck"
            ]
        }
    }
    

    ContentCheck云函数的目录结构如下:

    ├─checkContent
    │      config.json       //云调用的权限配置
    │      index.js         //云服务器node 入口文件
    │      package.json     // NPM包依赖
    │ ...
    

    编辑ContentCheck云函数目录下的index.js文件

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init()
    
    // 云函数入口函数
    exports.main = async(event, context) => {
      try {
        let msgR = false;
        let imageR = false;
        //  检查文本内容是否违规
        if (event.msg) {
          msgR = await cloud.openapi.security.msgSecCheck({
            content: event.msg
          })
        }
        //  检查图像内容是否违规
        if (event.img) {
          imageR = await cloud.openapi.security.imgSecCheck({
            media: {
              header: {
                'Content-Type': 'application/octet-stream'
              },
              contentType: 'image/png',
              value: Buffer.from(event.img)
            }
          })
        }
        return {
          msgR,
          imageR
        };
      } catch (e) {
        return e
      }
    }
    

    编辑完云函数之后,右键ContentCheck唤起菜单选择 上传并部署:云端安装依赖

    image

    注意
    使用微信小程序云函数开发本地需要实现安装好Node.js环境,并配置好环境变量,之前新电脑没装Node.js环境导致上传的云函数老是调用失败,解决办法是安装好Node.js就好了。
    验证Node.js是否安装npm -vnode -version

    image

    调用云函数

    app.js初始化云环境,参数env可以在云开发的设置中可以看到当前的环境ID

    //app.js
    App({
      onLaunch: function () {
        wx.cloud.init({
          env: "manjaro-7l50h",
          traceUser: true
        })
        ...
      },
    })
    
    image
    1. 检查文字是否违规

         //  调用ContentCheck云函数检查文字是否违规
         wx.cloud.callFunction({
           name: 'ContentCheck',
           data: {
             msg: _this.data.msg,
           },
           success(res) {
             console.log(res.result)
             if (res.result.msgR.errCode == 87014) {
               wx.showToast({
                 title: '文字违规',
               })
             }
           }
         })
      
      // 文字违规打印的console.log(res.result)
      {
       msgR: {
           errCode: 87014,
           errMsg: "openapi.security.msgSecCheck:fail risky content hint: [cSp9ka06218622]"
       },
       imageR: false
      }
      // 文字正常打印的console.log(res.result)
      {
       msgR: {
           errCode: 0,
           errMsg: "openapi.security.msgSecCheck:ok"
       },
       imageR: false
      }
      
    2. 检查图片是否违规

      //  调用ContentCheck云函数检查图片是否违规
      wx.cloud.callFunction({
        name: 'ContentCheck',
        data: {
          img: _this.data.img
        },
        success(res) {
          console.log(res.result)
          if(res.result.imageR.errCode == 87014){
            wx.showToast({
              title: '图片违规',
            })
          }
        }
      })
      
      // 图片违规打印的console.log(res.result)
      {
       msgR: false,
       imageR: {
           errCode: 87014,
           errMsg: "openapi.security.imgSecCheck:fail risky content hint: [LGrV.a05623955]"
       }
      }
      // 图片正常打印的console.log(res.result)
      {
       msgR: false,
       imageR: {
           errCode: 0,
           errMsg: "openapi.security.imgSecCheck:ok"
       }
      }
      

    完整例子 contentSecCheck

    Reference

    微信小程序官方文档
    小程序评论回复和发帖功能实战

    相关文章

      网友评论

        本文标题:小程序开发的内容安全审核

        本文链接:https://www.haomeiwen.com/subject/ydmqwctx.html