摘要:前文編程實(shí)現(xiàn)函數(shù)的實(shí)現(xiàn)很簡單,在服務(wù)器返回的響應(yīng)中,里增加,瀏覽器接受到中的,下次訪問這個(gè)網(wǎng)站的請求中就會(huì)帶上這個(gè)。此時(shí)服務(wù)端解析,根據(jù)就知道當(dāng)前用戶是登陸狀態(tài)的。顯然,直接在里寫用戶的是不安全的。下一篇文章編程簡單實(shí)現(xiàn)和密碼
前文:【python socket編程】—— 4.實(shí)現(xiàn)redirect函數(shù)
cookie的實(shí)現(xiàn)很簡單,在服務(wù)器返回的響應(yīng)中,header里增加Set-Cookie,瀏覽器接受到Set-Cookie中的value,下次訪問這個(gè)網(wǎng)站的請求中就會(huì)帶上這個(gè)cookie。編寫一個(gè)增加cookie的函數(shù):
def add_cookie(cookie=""): header = "HTTP/1.1 200 OK Content-Type: text/html " header += "Set-Cookie: {} ".format(cookie) return header
假設(shè)用戶登錄驗(yàn)證成功之后,我們用add_cookie將其用戶名username存入到cookie中返回給瀏覽器,例如承接前文,用戶登錄成功后給其返回一個(gè)302跳轉(zhuǎn)的響應(yīng),我們在其中再加入cookie,此時(shí)response如下:
HTTP/1.1 302 JUMP Content-Type: text/html Set-Cookie: Harp Location: /
那么瀏覽器下次請求,request的header里就會(huì)帶上Cookie: Harp這一行了。此時(shí)服務(wù)端解析request,根據(jù)cookie就知道當(dāng)前用戶是登陸狀態(tài)的。
顯然,直接在cookie里寫用戶的username是不安全的。我們可以把username存在session里,假設(shè)session是一個(gè)字典,用戶登錄驗(yàn)證成功后,隨機(jī)生成一個(gè)長的字符串session_id作為key,username作為value存入session中,然后把session_id作為cookie返回給瀏覽器,瀏覽器下次請求時(shí)候帶上的cookie內(nèi)容為這個(gè)session_id,我們?nèi)?b>session里取對應(yīng)的value即可。
下一篇文章:【python socket編程】—— 6.簡單實(shí)現(xiàn)render_template和密碼hash
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41337.html
摘要:原理就是當(dāng)瀏覽器接受到服務(wù)器響應(yīng)的狀態(tài)碼是或者時(shí),表示請求的頁面已經(jīng)永久或臨時(shí)性轉(zhuǎn)移到了新的位置,而這個(gè)新的位置儲(chǔ)存在響應(yīng)的里這個(gè)字段。 前文:【python socket編程】—— 3.響應(yīng) 在Flask框架中有一個(gè)redirect函數(shù),用于實(shí)現(xiàn)頁面的跳轉(zhuǎn),現(xiàn)在我們來實(shí)現(xiàn)它。原理就是:當(dāng)瀏覽器接受到服務(wù)器響應(yīng)的狀態(tài)碼是301或者302時(shí),表示請求的頁面已經(jīng)永久或臨時(shí)性轉(zhuǎn)移到了新的位...
摘要:前文編程實(shí)現(xiàn)和在中有函數(shù),用于解析模板,現(xiàn)在我們來簡單實(shí)現(xiàn)它。密碼的加密,可以使用這個(gè)庫,可以實(shí)現(xiàn)等多種方式,例如傳入的,會(huì)返回加密之后的字符串,值得一提的是的方法,和依次返回的結(jié)果是一樣。 前文:【python socket編程】—— 5.實(shí)現(xiàn)cookie和session 在Flask中有render_template函數(shù),用于解析jinja2模板,現(xiàn)在我們來簡單實(shí)現(xiàn)它。代碼如下:...
摘要:在保存登錄狀態(tài)與注銷功能這篇文章中,我們使用了來保存,實(shí)際上默認(rèn)的功能,是客戶端,與之相對的是服務(wù)器端。今天我們來實(shí)現(xiàn)服務(wù)器端,原理很簡單,實(shí)際上在編程實(shí)現(xiàn)和這篇文章中我們已經(jīng)做過了。現(xiàn)在我們用數(shù)據(jù)庫來保存,并為其設(shè)置有效期。 在11.保存登錄狀態(tài)與注銷功能這篇文章中,我們使用了session來保存username,實(shí)際上Flask默認(rèn)的session功能,是客戶端session(cl...
摘要:反序列化安全問題一這一段時(shí)間使用做開發(fā),使用了存儲(chǔ),閱讀了源碼,發(fā)現(xiàn)在存儲(chǔ)到過程中,利用了模塊進(jìn)行序列化以及反序列化正好根據(jù)該樣例學(xué)習(xí)一波反序列化相關(guān)的安全問題,不足之處請各位表哥指出。 Python 反序列化安全問題(一) 這一段時(shí)間使用flask做web開發(fā),使用了redis存儲(chǔ)session,閱讀了flask_session源碼,發(fā)現(xiàn)在存儲(chǔ)session到redis過程中,利用了...
摘要:從導(dǎo)入相應(yīng)函數(shù),即傳入一個(gè)上一步中的類,返回對應(yīng)的網(wǎng)頁內(nèi)容,具體實(shí)現(xiàn)將在后續(xù)講解。后續(xù)只要去處理解析請求和響應(yīng)部分即可,主程序可以不用再修改。下一篇文章編程解析請求頭 Flask或者其他框架都是封裝的比較完善,我們可以不去關(guān)注路由、SESSION等到底是怎么實(shí)現(xiàn)的,現(xiàn)在我們使用socket來實(shí)現(xiàn)一個(gè)帶有注冊、登錄功能的To do網(wǎng)站,這樣能對后端框架了解的稍微更深入一點(diǎn)(當(dāng)然你也可以直...
閱讀 2165·2021-11-12 10:36
閱讀 2157·2021-09-03 10:41
閱讀 2779·2021-08-19 10:57
閱讀 1246·2021-08-17 10:14
閱讀 1498·2019-08-30 15:53
閱讀 1219·2019-08-30 15:43
閱讀 983·2019-08-30 13:16
閱讀 2995·2019-08-29 16:56