csrf能夠成功的條件:
1).登陸正常網站之後,瀏覽器保存sessionId,沒有退出
2).不小心訪問了另外一個網站,並且點擊了頁面上的按鈕
防禦的原理:
1)渲染模板文件時在頁面生成一個名字叫做csrfmiddlewaretoken的隱藏域
2)服務器交給瀏覽器保存一個名字爲csrftoken的Cookie信息
3)提交表單時,兩個值都會發給服務器,服務器進行比對時,如果一樣,csrf驗證通過,否則失敗
1.login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸頁面</title>
</head>
<body>
<form method="post" action="/login_check">
用戶名:<input type="text" name="username" value="{{username}}"/><br/>
密碼:<input type="password" name="password"/><br/>
<input type="checkbox" name="remember"/>記住用戶名<br/>
<input type="submit" value="登陸">
</form>
</body>
</html>
2.當輸入用戶名和密碼後,提交時候顯示403 Forbidden
3.解決辦法,在post提交表單裏面增加標籤{% csrf_token %}