小程序模板網(wǎng)

小程序如何在業(yè)務(wù)系統(tǒng)中接入圖片安全校驗(yàn)

發(fā)布時(shí)間:2020-05-19 09:57 所屬欄目:小程序開(kāi)發(fā)教程

在小程序開(kāi)發(fā)的過(guò)程中,如果你的小程序中存在圖片上傳的能力,經(jīng)常會(huì)遇到同一個(gè)原因被拒絕審核:「沒(méi)有對(duì)上傳信息做審核」,想要過(guò)審核也很簡(jiǎn)單,只要將用戶上傳的圖片提交審核就可以了。而且,微信也提供了這樣的接口給開(kāi)發(fā)者,讓開(kāi)發(fā)者做接入。如果你使用了云開(kāi)發(fā),那就更加的簡(jiǎn)單,只需要使用云調(diào)用,一行代碼就可以完成產(chǎn)品的調(diào)用。

如何使用云函數(shù)中接入圖片安全校驗(yàn)

不少人看過(guò)一個(gè)視頻,里面的代碼大致是這樣寫(xiě)的,很簡(jiǎn)單,但很有效的完成了圖片的安全檢測(cè)

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  const img = (await cloud.downloadFile({
    fileID:event.fileID
  })).fileContent;
  return await cloud.openapi.security.imgSecCheck({
    media:{
      contentType:'image/png',
      value:img
    }
  });
}

這段代碼在絕大多數(shù)情況下都是不會(huì)出現(xiàn)運(yùn)行問(wèn)題的,但是,這個(gè)大多數(shù)情況是指 這個(gè)圖片沒(méi)有安全問(wèn)題 ,如果這個(gè)圖片的內(nèi)容有問(wèn)題,你的小程序運(yùn)行就會(huì)報(bào)錯(cuò),就像下面這樣。

這樣的報(bào)錯(cuò)有問(wèn)題么?沒(méi)有的,因?yàn)檫@個(gè)就是系統(tǒng)的運(yùn)行機(jī)制,但是,這樣的問(wèn)題如果不做處理,就會(huì)在實(shí)際應(yīng)用過(guò)程中出現(xiàn)問(wèn)題。

這段報(bào)錯(cuò)的意思是: 由于檢測(cè)的內(nèi)容出現(xiàn)了問(wèn)題,導(dǎo)致系統(tǒng)出現(xiàn)了異常,從未拋出了一個(gè)異常,在這種情況下,開(kāi)發(fā)者需要做的就是捕獲這個(gè)異常。在 JavaScript 中,我們只需要在我們的項(xiàng)目中加入 try...catch... 就可以處理了。

加入 try...catch... 后,我們得到的代碼是這樣的

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  const img = (await cloud.downloadFile({
    fileID:event.fileID
  })).fileContent;
  try {
    await cloud.openapi.security.imgSecCheck({
      media:{
        contentType:'image/png',
        value:img
      }
    });
    return {
      code: 0,
      msg: "ok"
    }
  } catch (err) {
    return {
      code: 1,
      msg: err
    }
  }
}

這段代碼會(huì)在圖片沒(méi)有問(wèn)題的時(shí)候回復(fù)一個(gè) { "code": 0, "code":"ok"} ,如果圖片有問(wèn)題的話,就會(huì)返回 {"code":1,"msg":"錯(cuò)誤的原因"} 。

在這種情況下,你只需要在云函數(shù)的返回值中獲取到 code ,如果等于 0 ,就說(shuō)明用戶上傳的圖片通過(guò)審核。如果返回 1 ,則說(shuō)明用戶的圖片沒(méi)有通過(guò)審核。

如何在業(yè)務(wù)系統(tǒng)中加入圖片安全校驗(yàn)

前面的內(nèi)容介紹了如何開(kāi)發(fā)出一個(gè)圖片安全校驗(yàn)的云函數(shù),接下來(lái),我們來(lái)看看如何在業(yè)務(wù)系統(tǒng)中接入這個(gè)功能。

實(shí)際上,我們有兩種方式在業(yè)務(wù)系統(tǒng)中實(shí)現(xiàn)圖片安全校驗(yàn),一種是前置校驗(yàn),一種是后置校驗(yàn)。

前置校驗(yàn)是指用戶所提交的數(shù)據(jù)還沒(méi)有提交到數(shù)據(jù)庫(kù)前對(duì)圖片進(jìn)行校驗(yàn),如果圖片不合格,就不允許圖片提交到數(shù)據(jù)庫(kù)中。

后置校驗(yàn)則是指用戶所提交的數(shù)據(jù)先提交到數(shù)據(jù)庫(kù)中,并標(biāo)記為審核中狀態(tài), 后續(xù)通過(guò)審核再修改狀態(tài)為通過(guò),從而讓用戶提交的內(nèi)容在前臺(tái)可見(jiàn)。

一般而言,推薦大家使用前置校驗(yàn),這樣可以避免錯(cuò)誤的數(shù)據(jù)進(jìn)入到你的數(shù)據(jù)庫(kù)中,后續(xù)可能有風(fēng)險(xiǎn)。如果你的系統(tǒng)對(duì)于性能的要求特別特別的高,而安全校驗(yàn)接口返回速度慢一些,在這種情況下,你可以選擇后置校驗(yàn),降低用戶在提交數(shù)據(jù)時(shí)的等待時(shí)間。

不過(guò),后置校驗(yàn)的話,一定記得在前端進(jìn)行查詢的時(shí)候,將未審核的部分提醒用戶,不可訪問(wèn),避免出現(xiàn)審核問(wèn)題。

總結(jié)

在小程序中接入圖片安全校驗(yàn)功能很簡(jiǎn)單, 不過(guò),在實(shí)際的接入過(guò)程中, 你還是需要配合自己的實(shí)際業(yè)務(wù)情況來(lái)選擇如何接入。


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://22321a.com/wxmini/doc/course/25213.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢