cookie和session csrf防護 中介軟體

2022-04-20 08:52:27 字數 2135 閱讀 9246

cookie概念: 是由伺服器生成,儲存在瀏覽器端的一小段文字資訊。

cookie特點:

1) cookie是以鍵值對進行儲存的。

3) cookie是基於網域名稱安全的。

4) cookie是有過期時間的,預設關閉瀏覽器之後過期。

設定cookie: set_cookie(key, value, max_age='過期時間')。

讀取cookie: request.cookies(儲存瀏覽器發過來的cookie資訊)

刪除cookie. delete_cookie(key)

session概念: 儲存在伺服器端的文字資訊,預設儲存在伺服器端的django_session表中。

sesssion特點:

1) session也是以鍵值對進行儲存的。

2) session依賴於cookie, session資訊對應的唯一標識預設儲存在sessionidcookie中。

3) session是有過期時間的,預設兩周之後過期。

設定session: request.session['鍵']='值'

獲取session: 變數 = request.session['鍵']

刪除session: request.session.flush()

擴充套件:2) session的儲存需要借助於middleware_classes中的

'django.contrib.sessions.middleware.sessionmiddleware'中介軟體。

3) 可以通過session_engine配置session儲存在什麼地方。

csrf跨站請求偽造:

如果使用者登入了**,並且未退出, 點選了偽造鏈結,瀏覽器就會以登入使用者的身份去訪問a**,可能會造成密碼的的修改和財產的損失等,這就是csrf請求偽造(跨站請求偽造)。

django框架針對post提交資料具有csrf的防護驗證,如果需要使用django的csrf防護,

需要按以下步驟:

1) 開啟django配置檔案中的csrf防護中介軟體。

2)在使用表單post提交時,需要在表單中加上標籤。

如果是ajax post請時,也需要在頁面上加上標籤。
防禦原理:

1) 訪問頁面時,django會把標籤替換為乙個名為csrfmiddlewaretoken的隱藏域。

2)同時django**會讓瀏覽器儲存乙個名為csrftoken的cookie資訊。

3)在進行表單提交或者ajax post提交時,csrfmiddlewaretoken隱藏域的值和crsftoken cookie的值

都會被提交給伺服器,django框架中的csrf防護中介軟體會對這兩個值進行對比,如果一致,則csrf驗

正通過,可以進行後續操作,否則出現403錯誤。

中介軟體流程

request對像產生: 請求到達django框架內部時,django框架會把請求報文中的請求資訊封裝在request物件的屬性中

===>依次從上到下呼叫middleware_classes註冊中介軟體類中的process_request函式

===>

根據請求的url位址進行匹配

===>依次從上到下呼叫middleware_classes註冊中介軟體類中的process_view函式

===>

呼叫檢視函式

===>依次從下到上呼叫middleware_classes註冊中介軟體類中的process_view函式

cookie值得修改和cookie的壽命

1.方法一 建立乙個同名得cookie 接著修改 cookie cookie new cookie key newyasuo 2.設定cookie物件 通知客戶端儲存 response.addcookie cookie response.getwriter write cookie修改成功!2.方法...

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...

cookie設定和刪除

在網上找了很多資料,都發現有問題,後面通過多次測試,終於搞定,把 貼出了,希望對大家所有幫助 設定cookie string loginname test string pswd test cookie cookie new cookie username urlencoder.encode log...