日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

64 装饰器函数: 母版 csrf防御机制 cookie

發布時間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 64 装饰器函数: 母版 csrf防御机制 cookie 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要內容:

1: 裝飾器函數

  a: 原理: 在不改變原函數的代碼和調用方式的情況下, 給函數動態的添加功能

  b: 實例:

裝飾器的原理: def yue(tools):print('使用%s約一約' % tools) def wrapper(fn):def inner(*args, **kwargs):print('先準備好錢')fn(*args, **kwargs)return inner yue = wrapper(yue) yue('momo') # 實際執行inner函數 , 給inner函數傳參數, 要給inner函數設置形參, 即普遍協程萬能參數的形式,

  裝飾器函數形式

def wrapper(fn):def inner(*args, **kwargs):print('先準備好錢')ret = fn(*args, **kwargs) # 如果函數有返回值用ret接, 再返回.return retreturn 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.

?

    

?

?

?

  

轉載于:https://www.cnblogs.com/gyh412724/p/9756384.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的64 装饰器函数: 母版 csrf防御机制 cookie的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。