日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python api接口 安全_App开放接口api安全性的设计与实现

發布時間:2024/9/18 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python api接口 安全_App开放接口api安全性的设计与实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在app開放接口api的設計中,避免不了的就是安全性問題,因為大多數接口涉及到用戶的個人信息以及一些敏感的數據,所以對這些接口需要進行身份的認證,

那么這就需要用戶提供一些信息,比如用戶名密碼等,但是為了安全起見讓用戶暴露的明文密碼次數越少越好,我們一般在web項目中,大多數采用保存的session中,

然后在存一份到cookie中,來保持用戶的回話有效性。但是在app提供的開放接口中,后端服務器在用戶登錄后如何去驗證和維護用戶的登陸有效性呢?

設計

對于敏感的api接口,需使用https協議

https是在http超文本傳輸協議加入SSL層,它在網絡間通信是加密的,所以需要加密證書。https協議需要ca證書,一般需要交費。

1、原理

用戶登錄后向服務器提供用戶認證信息(如賬戶和密碼),服務器認證完后給客戶端返回一個PID令牌,用戶再次獲取信息時,

帶上此令牌,如果令牌正取,則返回數據。對于獲取Token信息后,訪問用戶相關接口,客戶端請求的url需要帶上如下參數:

① 時間戳:timestamp

② PID令牌:PID(在這我們給定義為PID)

然后將所有用戶請求的參數(包括timestamp,pid),然后更具MD5加密(可以加點鹽),生成動態的url。

然后登陸后每次調用用戶信息時,帶上timestamp,pid參數。

加上時間戳和pid后的URL:http://127.0.0.1:8888/index?pid=d073dae99f70b0cda2fa1ef8d25c527f|1475117419.5424652|0

就變成一個動態的而且相對的具有高安全的,保證數據安全的訪問。

2、具體實現

1. api請求客戶端想服務器端一次發送用用戶認證信息(用戶名和密碼),服務器端請求到改請求后,驗證用戶信息是否正確。

如果正確:則返回一個唯一不重復的字符串,然后在Redis(任意緩存服務器)中維護這個用戶信息關系,以便其他api對pid的校驗。

如果錯誤:則返回錯誤碼。

2.服務器設計一個url請求攔截規則

①判斷是否包含timestamp,pid參數,如果不含有返回錯誤碼。

②根據用戶請求的url參數,服務器端按照同樣的規則生成動態的URL,對比請求的動態url與服務端生成的是否相等,相等則放行允許訪問。

③判斷服務器接到請求的時間和參數中的時間戳是否相差很長一段時間(時間自定義如十秒),如果超過則說明該url已經過期。

④記錄下每次請求的動態URL,規定一個動態的URL只能訪問一次,檢測每次請求的url是否請求過,去過存在就返回錯誤代碼(處理url被攔截并且在十秒內請求的訪問)。

⑤此url攔截只需對獲取身份認證的url放行(如登陸url),剩余所有的url都需攔截。

3.定期處理保存下來的動態請求URL

代碼實現

服務端規定的規則

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import tornado.ioloop

import tornado.web

import hashlib

import time

access_record = [] # 創建第一次登錄過URL列表

PID_LIST = [ # pid列表

'qwe',

'ioui',

'234s',

]

class MainHandler(tornado.web.RequestHandler):

def get(self):

# 獲取url中全部數據

pid = self.get_argument('pid', None)

# 獲取變量

m5, client_time, i = pid.split('|') # 獲得數據,以“|”分割開

print(m5, client_time, i)

server_time = time.time() # 服務端的當前時間

# 時間超過10s禁止

if server_time > float(client_time) + 10: # 服務端的當前時間大于客戶端當前時間加10秒,表示過期不允許訪問

self.write('gun')

return

# 處理10s內容重復的請求

if pid in access_record: # 如果客戶端請求的動態URL在第一次登錄過的URL列表中

self.write('gun')

return

access_record.append(pid) # 允許通過的url添加到列表中

pid = PID_LIST[int(i)] # 獲得客戶端發來的pid后面攜帶的數字

ramdom_str = "%s|%s" % (pid, client_time) # 把客戶的pid與當前時間戳拼接

h = hashlib.md5() # MD5加密值

h.update(bytes(ramdom_str, encoding='utf-8')) # 把客戶的pid與當前時間戳拼接一個字符串再盡心md5加密

server_m5 = h.hexdigest() # 服務端生成的動態URL

# print(m5,server_m5)

if m5 == server_m5: # 客戶生成的與服務端生成的進行對比

self.write("Hello, world")

else:

self.write('gun')

application = tornado.web.Application([

(r"/index", MainHandler),

])

if __name__ == "__main__":

application.listen(8888)

tornado.ioloop.IOLoop.instance().start()

客戶端按規則生成符合的

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import time

import requests

import hashlib

PID = 'qwe' # 客戶的PID

current_time = time.time() # 當前時間戳

ramdom_str = "%s|%s" % (PID, current_time) # 把pid與當前時間戳拼接成一個字符串

h = hashlib.md5() # md5加密

h.update(bytes(ramdom_str, encoding='utf-8')) # 把pid與當前時間戳拼接成一個字符串再進行md5加密

UID = h.hexdigest() # 加密后的字符串

q = "%s|%s|0" % (UID, current_time) # 在把這個字符串后面拼接一個數值 0

url = 'http://127.0.0.1:8888/index?pid=%s' % q # 生成最后生成的動態url

print(url)

ret = requests.get(url)

print(ret.text)

測試效果代碼

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import requests

ret = requests.get('http://127.0.0.1:8888/index?pid=c2539948caa7b7fe0d00fcd9d75b7574|1474341577.4938722|0')

print(ret.text)

這是比較粗超的API認證機制,可以初步了解。

總結

以上是生活随笔為你收集整理的python api接口 安全_App开放接口api安全性的设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码999 | 欧美精品在欧美一区二区少妇 | 精品少妇一区二区三区免费观 | 欧美亚洲视频一区 | 四季av国产一区二区三区 | 裸体av淫导航 | 久青草影视 | 五月婷婷丁香 | 国产日本一区二区三区 | 久久久福利视频 | 户外少妇对白啪啪野战 | 亚洲午夜免费视频 | 国产精品久久久久久久久久久久午夜片 | 久久七 | 法国空姐电影在线观看 | av色图| 性开放耄耋老妇hd | 国产黄在线 | 黑人精品无码一区二区三区AV | 538国产精品一区二区 | 99在线视频观看 | 欧美人和黑人牲交网站上线 | 亚洲第一毛片 | 一本无码aⅴ久久久国产 | 鲁大师私人影院在线观看 | 顶级嫩模啪啪呻吟不断好爽 | 女人高潮娇喘1分47秒 | 亚洲天堂网络 | 亚洲va久久久噜噜噜无码久久 | 欧洲最强rapper网站直播 | 国产成人精品亚洲线观看 | av丝袜天堂 | 嫩草在线播放 | 国产精品videos | 交专区videossex另类 | 男人的天堂视频网站 | 天天草天天干 | 中日韩在线观看 | 欧洲一级片| 成人a免费 | 日本三区视频 | 国产精品19p | 一起艹在线观看 | 色呦呦网站入口 | wwwav在线播放 | 成人福利视频在线 | а√在线中文网新版地址在线 | 蜜桃视频在线播放 | 18视频在线观看网站 | 特级淫片裸体免费看 | 男人免费网站 | 日本加勒比一区二区 | 成都电影免费大全 | 亚洲卡一卡二 | 香港三级在线视频 | 91在线观看网站 | 一级黄色录相 | 欧美电影一区二区三区 | 成人综合区 | 成人中文字幕在线 | 亚洲最大福利视频 | 天堂网视频在线观看 | 中文字幕一区二区三区四区免费看 | 男人日女人逼 | 国产亚洲小视频 | 日本视频在线看 | 日本55丰满熟妇厨房伦 | 日本黄色www | 国产亚洲欧美一区二区三区 | 欧美三根一起进三p | 亚洲无吗一区二区三区 | 蘑菇视频黄色 | 国产女主播视频 | 理论片午午伦夜理片影院99 | 美国性生活大片 | 久久av资源站 | 成人在线视频播放 | xxx国产 | 欧美亚洲另类视频 | 色视频网址 | 国产视频一区二区三 | 91免费网站在线观看 | 日韩美女三级 | 黄网址在线观看 | 在线一区av | 免费h片网站 | 日本视频黄 | 国内精品国产成人国产三级 | 西欧毛片 | 国产农村妇女精品一区二区 | 五月天在线观看 | 日本黄色三级 | 日韩精品中文字幕一区二区三区 | 精品久久久久久久久久久久久久 | 永久免费,视频 | 操少妇视频 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 日本美女a级片 | 欧美激情福利 |