如何保护你的API

首先要明确HTTP请求是一种无状态请求

无状态请求概念

两种机制:

Token

  • 作用 证明你是谁(用于存储当前请求人信息...用户名,权限等根据业务设定)
  • 说明 一般在登录成功后设置,在登出后删除。
    self.session[token] = {"account": account}

签名

  • 作用 证明你是你(防止中途篡改数据,非法传参调用接口)
  • 存放位置 可以放在headers,也可以放在url中
  • 算法设计(可以自定义算法)
def signatuer(*args, **kwargs):
    keys = sorted(kwargs.keys())
    key_str = "".join(keys)
    values_str = ""
    for key in keys:
        values_str += str(kwargs[key])
    logging.info("********Values_Str:{0}********".format(values_str))
    s = "{}{}".format(key_str, values_str)
    # 加密
    signature_str1 = md5(s)
    # 加盐加密na
    signature_str = md5("NCSS-SASH-{}".format(signature_str1))
    logging.info("********Sign_Str**********".format(signature_str))
    return signature_str  
  • 如果中途数据被篡改导致前后端签名不一致,则鉴权异常,判定非法请求。
       headers = self.request.headers
       user_signatuer_str = headers["signatuer"]
       if local_signatuer_str != user_signatuer_str:
           return

完整示例

简易登录系统示例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。