2020-02-27 django 网站接入 阿里云盾 智能人机验证

准备工作

首先开通阿里云盾功能,然后点击新增配置


image.png

填写完信息之后点击系统代码集成

用到的代码库:

http://jaq-upload-img.cn-hangzhou.oss-pub.aliyun-inc.com/2AliyunServerSdk/aliyun-python-sdk-afs-20180112.zip?spm=5176.2020520162.0.0.c6145fb06Ys4sT&file=aliyun-python-sdk-afs-20180112.zip

集成 html 代码

拿登录页面举例

                    
{%csrf_token%}

{{ message }}

忘记密码?

然后配置 js

  • 添加js 文件:
    
    
  • 添加 js 代码

    
    

前端这样就完成啦

后端集成

我用的是 Django 后端,这里只讲配追,其他系统自行摸索

后端业务判断

import xml.sax
import xml.sax.handler
from aliyunsdkcore import client
from aliyunsdkafs.request.v20180112 import AuthenticateSigRequest
from aliyunsdkcore.profile import region_provider


def check_valid_code(token, sig, sessionId):
   # YOUR ACCESS_KEY、YOUR ACCESS_SECRET请替换成您的阿里云accesskey id和secret
   clt = client.AcsClient(settings.ALI_VALID_ACCESS_KEY, settings.ALI_VALID_ACCESS_SECRET, settings.ALI_VALID_REGON)
   request = AuthenticateSigRequest.AuthenticateSigRequest()
   # 必填参数:从前端获取,不可更改,android和ios只传这个参数即可
   request.set_SessionId(sessionId)
   # 必填参数:从前端获取,不可更改
   request.set_Sig(sig)
   # 必填参数:从前端获取,不可更改
   request.set_Token(token)
   # 必填参数:从前端获取,不可更改
   request.set_Scene('ic_login')
   # 必填参数:后端填写
   request.set_AppKey('<阿里云盾开通的时候获得的Appkey>')
   # 必填参数:后端填写
   request.set_RemoteIp("我感觉这里随便填写")
   result = clt.do_action(request)  # 返回code 100表示验签通过,900表示验签失败

   xh = XMLHandler()
   xml.sax.parseString(result, xh)
   ret = xh.getDict()

   return ret
            token = request.POST.get("token", '')
            sig = request.POST.get("sig", '')
            session_id = request.POST.get("sessionId", '')
            valid_result = check_valid_code(token, sig, session_id)
            if not valid_result.get("Code", "") == "100":
                return JsonResponse({"msg": "云盾验证失败!"})
            # 下面做验证成功的逻辑,无论传上来什么,先验证云盾,防止穷举漏洞

自此,阿里云盾集成结束,前端接受并显示后端发送的验证结果即可

你可能感兴趣的:(2020-02-27 django 网站接入 阿里云盾 智能人机验证)