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