python接口自动化之cookie,session,token鉴权解决方案
http協(xié)議:簡(jiǎn)單、快捷、無(wú)連接、無(wú)狀態(tài)。多次請(qǐng)求之間是沒(méi)有關(guān)聯(lián)的,獨(dú)立的。
一、cookie鑒權(quán)
1、什么是cookie?
cookie是在服務(wù)器產(chǎn)生的存儲(chǔ)在客戶端的一小段文本信息,格式是字典,鍵值對(duì)。
2、cookie的分類
會(huì)話級(jí):保存內(nèi)容,當(dāng)瀏覽器關(guān)閉就會(huì)丟失
持久化:保存硬盤(pán),只有當(dāng)失效時(shí)間到了才會(huì)被清除
3、如何查看cookie
name,value、domain、path、express、size
4、cookie如何實(shí)現(xiàn)鑒權(quán)(原理)
當(dāng)客戶端第一次訪問(wèn)服務(wù)器時(shí),那么服務(wù)器就會(huì)產(chǎn)生cookie,然后通過(guò)相應(yīng)頭的方式在Set-Cookie傳輸?shù)娇蛻舳恕?蛻舳藦牡?-N次請(qǐng)求都會(huì)自動(dòng)的帶上這些cookie。
致命的弱點(diǎn):cookie保存在客戶端,對(duì)于一些敏感信息,用戶名,密碼,身份證。 不安全
第一個(gè)接口:
第二個(gè)接口:
二、session鑒權(quán)
當(dāng)用戶第一次訪問(wèn)服務(wù)器的時(shí)候,然后再服務(wù)器端保存一個(gè)sessionid,這個(gè)sessionid是經(jīng)過(guò)加密的,然后通過(guò)cookie吧這個(gè)sessionid保存到客戶端,然后請(qǐng)求服務(wù)器的時(shí)候只發(fā)送sessionid。
sessionid保存在服務(wù)器內(nèi)存中。
致命弱點(diǎn):解決了cookie不安全的問(wèn)題,但是隨著又出現(xiàn)了新的問(wèn)題。當(dāng)用戶量特別大的時(shí)候,會(huì)導(dǎo)致服務(wù)器崩潰。
服務(wù)器集群: 請(qǐng)求IP捆綁、session復(fù)制、單點(diǎn)登錄。
第一個(gè)接口:
第二個(gè)接口:
三、token鑒權(quán)
當(dāng)一個(gè)用戶登錄之后,就給他發(fā)送一個(gè)token令牌,下一次用戶再次請(qǐng)求的時(shí)候,只要帶上這個(gè)令牌。token可以通過(guò)抓包抓取(http)
token保存在文件中或是保存在數(shù)據(jù)庫(kù)中。
加密:
對(duì)稱加密:des aes
雙鑰加密:RSA
只加密不解密:md5 SHA
token的分類:
access_token:有時(shí)間期限,限制在15分鐘
refresh_token:一般15天
第一個(gè)接口:
第二個(gè)接口:
四、cookie、session、token的相同點(diǎn)和區(qū)別?
相同點(diǎn):都是用于做鑒權(quán)的,都是服務(wù)器產(chǎn)生的。
區(qū)別:
(1)cookie存儲(chǔ)在客戶端,session存儲(chǔ)在服務(wù)器,session的安全性比cookies高。所以一般情況下把重要的信息放在session,把不重要的放cookies。
(2)session存在服務(wù)器內(nèi)存,token存在服務(wù)器的為難或者數(shù)據(jù)庫(kù)中,token的好處是比session更省服務(wù)器資源。token只需要在服務(wù)器解密即可。
自動(dòng)化層面:
工具:postman、jmeter
代碼:借口關(guān)聯(lián),cookie鑒權(quán)、session鑒權(quán)、web自動(dòng)化用cookie跳過(guò)驗(yàn)證碼
出現(xiàn)了新的問(wèn)題:第三方支付,銀行,金融項(xiàng)目,安全的要求更高。
數(shù)字證書(shū):
五、接口簽名:sign
既可以在工具里面解決,也可以在代碼里面解決。
為什么我們有工具postman、jmeter,那么我們?yōu)槭裁醋龃a級(jí)別的接口自動(dòng)化?
(1)敏捷開(kāi)發(fā):接口巨大 不容易做版本控制和團(tuán)隊(duì)協(xié)作
(2)工具太死,我們需要自定義一些功能
(3)一個(gè)項(xiàng)目中有多種協(xié)議的接口
(4)定位問(wèn)題
(5)工具,沒(méi)有辦法生成美觀的報(bào)告。allure
(6)對(duì)于復(fù)雜的接口,多接口協(xié)議,數(shù)據(jù)庫(kù)
(7)日志監(jiān)控
(8)接口自動(dòng)化 web自動(dòng)化
深度:接口自動(dòng)化
(1)所有的請(qǐng)求都必須要統(tǒng)一管理
(2)封裝好接口自動(dòng)化測(cè)試框架之后,功能測(cè)試只需要寫(xiě)測(cè)試用例,不需要寫(xiě)代碼
1、什么是接口簽名?
使用用戶名、密碼、時(shí)間戳和所有排過(guò)序的參數(shù)組合起來(lái),再加密得到的字符串,字符串是唯一的幼犬訪問(wèn)第三方金融接口的鑒權(quán)碼。=sign接口簽名。
2、為什么需要做接口簽名?
1、防偽裝攻擊 2、防篡改攻擊 3、防重放攻擊 4、防數(shù)據(jù)泄露
3、如何做接口簽名,了解簽名規(guī)則
1、對(duì)所有請(qǐng)求的參數(shù)按key按ASCII碼做升序排列
{“c”:“3”,“b”:“2”,“a”:“1”} ?? {“a”:“1”,“b”:“2”,“c”:“3”}
2、把參數(shù)名和參數(shù)值連接成字符串
a=1&b=2&c=3
3、用申請(qǐng)到的appid和appsecret連接到字符串的頭部
appid:用戶名 appsecret:密碼
appid=admin&appsercet=123&a=1&b=2&c=3
4、用時(shí)間戳鏈接到字符串的尾部
appid=admin&appsercet=123&a=1&b=2&c=3×tamp=786276574
5、然后把這個(gè)字符串按照32位的MD5加密,加密后再轉(zhuǎn)化成大寫(xiě)。
sign=***
10秒有效
總結(jié)
以上是生活随笔為你收集整理的python接口自动化之cookie,session,token鉴权解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何删除SQL Server 2014
- 下一篇: Python迭代器、生成器、可迭代对象