標籤:發送post請求 csr 方式 srm 母片 現在 inf log 不同的
主要內容:
1: 裝飾器函數
a: 原理: 在不改變原函數的代碼和調用方式的情況下, 給函數動態添加功能
b: 執行個體:
裝飾器的原理:def yue(tools): print(‘使用%s約一約‘ % tools)def wrapper(fn): def inner(*args, **kwargs): print(‘先準備好錢‘) fn(*args, **kwargs) return inneryue = wrapper(yue)yue(‘momo‘) # 實際執行inner函數 , 給inner函數傳參數, 要給inner函數設定形參, 即普遍協程萬能參數的形式,
裝飾器函數形式
def wrapper(fn): def inner(*args, **kwargs): print(‘先準備好錢‘) ret = fn(*args, **kwargs) # 如果函數有傳回值用ret接, 再返回. return ret return inner@wrapper # 相當於執行yue = wrapper(yue)def yue(tools): print(‘使用%s約一約‘ % tools) return ‘準備好了‘print(yue(‘momo‘))
2 母片繼承
a : 作用: 可以減少代碼量, 最佳化代碼, 提高代碼的複用性 類似於函數中的繼承. (把相同的程式碼片段提取出來, 不同的地方作為補充)
b : {% extends ‘被繼承的.html檔案‘ %}
{% block contenter %}{% endblock %}
c : 執行個體
母片檔案
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <!-- 需要母片進行替換的.html檔案 --> {% block page-main %} {% endblock %}</body></html>
繼承母片檔案的.html
<!-- 繼承母片檔案.html -->{% extends "被繼承.html檔案路徑" %} {% block page-main %} <!-- page-main 是要被替換的塊名,可以更改 --> 內容 {% endblock %}在 views.py 中配置
3 csrf: (Cross-site request forgery)跨網站偽造要求
詳細介紹:https://www.cnblogs.com/freely/p/6928822.html
a : 原理如
從可以看出, 要完成一次的csrf攻擊, 受害者必須完成兩個步驟:
1. 登入受信任網站a, 並在本地產生cookie.
2. 在不退出a的情況, 訪問危險網站b.
注意: 並不是退出a後再登入b就沒事, 應為不能保證你關閉了瀏覽器後, 你本地的cookie就會到期, 你上次的會話已經結束
b : crsf 防禦機制
1 可以從服務端和用戶端兩方面著手, 防禦效果從服務端著手較好, 現在一般的csrf防禦也在服務端進行.
2 Django下的csrf防禦機制:Django第一次響應來自某個用戶端的請求時, 會在服務端隨機產生一個token, 把這個token放在cookie裡, 然後每次post請求都會帶上這個token這樣就可以避免csrf攻擊.
在 templete 中, 為每個 POST form 增加一個 {% csrf_token %} tag. 如下:
1在返回的 HTTP 響應的 cookie 裡,django 會為你添加一個 csrftoken 欄位,其值為一個自動產生的 token,在檢查下的network中查看.
2在所有的 POST 表單範本中,加一個{% csrf_token %} 標籤,它的功能其實是給form增加一個隱藏的input標籤,如下
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">,而這個csrf_token = cookie.csrftoken,在渲染模板時context中有 context[‘csrf_token‘] = request.COOKIES[‘csrftoken‘]
3在通過表單發送POST到伺服器時,表單中包含了上面隱藏了crsrmiddlewaretoken這個input項,服務端收到後,django 會驗證這個請求的 cookie 裡的 csrftoken 欄位的值和提交的表單裡的 csrfmiddlewaretoken 欄位的值是否一樣。如果一樣,則表明這是一個合法的請求,否則,這個請求可能是來自於別人的 csrf 攻擊,返回 403 Forbidden.
4在通過 ajax 發送POST請求到伺服器時,要求增加一個x-csrftoken header,其值為 cookie 裡的 csrftoken 的值,服務湍收到後,django會驗證這個請求的cookie裡的csrftoken欄位與ajax post訊息頭中的x-csrftoken header是否相同,如果相同,則表明是一個合法的請求
4 cookie(儲存在使用者本地終端上的資料)
定義:在 Internet 中,Cookie 實際上是指小量資訊,是由 Web 服務器建立的,將資訊儲存在使用者電腦上的檔案。一般網路使用者習慣用其複數形式 Cookies,指某些網站為了辨別使用者身份、進行 Session 跟蹤而儲存在使用者本地終端上的資料,而這些資料通常會經過加密處理
目的: 為了讓使用者在訪問某網站時,進一步提高訪問速度,同時也為了進一步實現個人化網路,發明了今天廣泛使用的 Cookiee.
64 裝飾器函數: 母片 csrf防禦機制 cookie