zoukankan      html  css  js  c++  java
  • API验证

    def asset(request):
        client_md5_time_key=request.META.get('HTTP_OPENKEY')
        client_md5_key,client_ctime=client_md5_time_key.split('|')
        client_ctime=float(client_ctime)
        server_time=time.time()
        #时间验证,用服务器时间减去客户端提交时间,如果大于一定范围,即认定链接有问题,返回错误消息
        if server_time-client_ctime>10:
            return HttpResponse("连接超时,请检查后重新连接")
        #规则验证,使用自己定义的字符串与时间生成MD5值,如果值提交错误,返回错误消息
        temp="%s|%s"%(settings.AUTH_KEY,client_ctime)
        m=hashlib.md5()
        m.update(bytes(temp,encoding="utf-8"))
        server_md5_key=m.hexdigest()
        if server_md5_key !=client_md5_key:
            return HttpResponse("认证失败")
    
        #使用列表维护验证信息,清除超时信息,拒绝重复验证信息连接
        for k in list(api_key_record.keys()):#此处循环的是字典的键,因为在循环字典本身时无法删除正在迭代的数据
            v=api_key_record[k]#因为需要使用字典键值循环判断
            if server_time>v:
                del api_key_record[k]
        if client_md5_time_key in api_key_record:
            return HttpResponse("拒绝重复链接")
        else:
            api_key_record[client_md5_time_key]=client_ctime+10
        if request.method=="GET":
            return HttpResponse("私密数据,不展示")

    API验证还有一种是基于数据层的加密,使用RAS对数据进行加密,即使API层面没有保护,也不会影响数据的安全,而且数据由于加密,没有实际意义,也不会造成损失

  • 相关阅读:
    linux 下vi中关于删除某段,某行,或者全部删除的命令
    Crontab的格式
    Crontab的格式
    Eclipse验证码
    jetty插件配置(开发)
    MongoDB使用手册
    Docker学习笔记(1) — docker 常用命令
    debian网易163更新服务器 源
    ssh安装过程
    HTML——列表标签
  • 原文地址:https://www.cnblogs.com/lzh1118/p/7264115.html
Copyright © 2011-2022 走看看