【HTTP API】简单的http签名算法

本文介绍了在CS架构中,为了防止公网接口被滥用和请求被篡改,采用HTTP API签名的方法。通过添加sig签名,服务端进行验证,可以有效提升接口安全性。签名过程包括:忽略URL路径中的'/',参数排序,拼接密钥和盐,最后计算MD5值。
摘要由CSDN通过智能技术生成

常见的CS架构中,客户端经常需要请求服务端提供的公网接口。由于接口暴露在公网,存在以下几个问题

  1. 接口就很容易被其他人利用甚至有可能导致被刷接口影响服务可用性。
  2. 请求被篡改,影响实际请求结果
  3. 其它问题

为了解决这些问题,最简单的方法是客户端请求服务端的时候加个sig签名,服务端对sig签名做个判断。
通过简单的sig签名能够防住一些被刷接口的可能,同时也能够做下请求校验,可以达到初步的防御效果。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import time
import md5

# 常量定义
SIG = "sig"
SIG_TIME = "sigTime"
SIG_VERSION = "sigVersion"
SIG_FINAL_STRING = "sigFinalString"
SIG_SDK_APP_SECRET = "xxx"              # 密钥 客户端服务端提前约定好即可
SIG_SDK_ADD_KEY = "yyy"                 # 盐   客户端服务端提前约定好即可

def get_signature(path, params, sig_time):
    new_path = path.lstrip("/")
    new_params = sort_params(params)
    return generate_signature(new_path, new_params, sig_time)

def sort_params(params):
    values = list()
    for k, v in params.items():
        if k == S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值