1. 程式人生 > >cookie和session-csrf防護

cookie和session-csrf防護

出現 -s XP ID font led mic war 配置文件

cookie概念: 是由服務器生成,保存在瀏覽器端的一小段文本信息。
cookie特點:
1) cookie是以鍵值對進行存儲的。
2) 瀏覽器訪問網站時,會將本地保存的跟網站相關的所有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()
設置session的過期時間: request.session.set_expire(‘秒數‘)
擴展:
1) django_session表中是由INSTALLED_APPS中的‘django.contrib.sessions‘應用生成的。
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提交時,需要在表單中加上{ % csrf_token % }標簽。
如果是ajax post請時,也需要在頁面上加上{ % csrf_token % }標簽。

防禦原理: 1) 訪問頁面時,django會把{ % csrf_token % }標簽替換為一個名為csrfmiddlewaretoken的隱藏域。 2)同時django網站會讓瀏覽器保存一個名為csrftoken的cookie信息。 3)在進行表單提交或者ajax post提交時,csrfmiddlewaretoken隱藏域的值和crsftoken cookie的值 都會被提交給服務器,django框架中的csrf防護中間件會對這兩個值進行對比,如果一致,則csrf驗 正通過,可以進行後續操作,否則出現403錯誤。
 

cookie和session-csrf防護