欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python djanjo之csrf防跨站攻擊實驗過程

 更新時間:2021年05月14日 14:43:32   作者:金小金~  
csrf攻擊,即cross site request forgery跨站(域名)請求偽造,這里的forgery就是偽造的意思。這篇文章主要給大家介紹了關(guān)于Python djanjo之csrf防跨站攻擊的相關(guān)資料,需要的朋友可以參考下

一.CSRF簡介

  1. CSRF是什么?
    CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。
  2. CSRF可以做什么?
    你這可以這么理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求。CSRF能夠做的事情包括:以你名義發(fā)送郵件,發(fā)消息,盜取你的賬號,甚至于購買商品,虛擬貨幣轉(zhuǎn)賬…造成的問題包括:個人隱私泄露以及財產(chǎn)安全。
  3. CSRF漏洞現(xiàn)狀?
    CSRF這種攻擊方式在2000年已經(jīng)被國外的安全人員提出,但在國內(nèi),直到06年才開始被關(guān)注,08年,國內(nèi)外的多個大型社區(qū)和交互網(wǎng)站分別爆出CSRF漏洞,如:NYTimes.com、Metafilter(一個大型的BLOG網(wǎng)站),YouTube和百度HI…而現(xiàn)在,互聯(lián)網(wǎng)上的許多站點仍對此毫無防備,以至于安全業(yè)界稱CSRF為“沉睡的巨人”。
    引用自:https://blog.csdn.net/qq_21956483/article/details/78116094

二.CSRF(Web表單提交)

web表單下設(shè)置CSRF標簽可以有效防止CSRF跨站攻擊(如下圖)

{% csrf_token %}

如果不設(shè)置該表單,那么在訪問web頁面時會禁止訪問(如下圖)

應(yīng)對禁止訪問,其實也有很多辦法,其中一個辦法就是將配置文件(settings.py)中的csrf的中間件兒拿掉,這樣原來禁止訪問的頁面也可以成功訪問,但這種做法風險是非常大的,出于安全考慮,不推薦這樣做

另一種辦法是在視圖層加一個裝飾器(@csrf_exempt),實現(xiàn)局部不檢測,換句話說,就是即使不在web表單中添加csrf標簽,只要加了裝飾器,也能成功訪問頁面,需要注意的是僅限加了裝飾器的內(nèi)容,其他不加裝飾器的代碼還是禁止訪問的狀態(tài)

三.CSRF(Web表單提交)實驗

接著我們就著上面說的內(nèi)容用代碼演示一遍:

首先,在app下的urls.py文件下配置一個子路由

from django.urls import path, re_path
from App import views

urlpatterns = [
    # csrf測試
    path('register/',views.register,name = 'register'),
]

接著,編寫視圖函數(shù)

def register(request):
    if request.method == "POST": # 如果該請求為POST請求
        username = request.POST.get('username') # 獲取表單中的username
        password = request.POST.get('password') # 獲取表單中的password
        print(username,password) # 打印username,password
    return render(request,'register.html') # 渲染模版,返回給web register.html中的內(nèi)容

web表單(未設(shè)置csrf標簽)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊</title>
</head>
<body>
<form ation="" method="post">
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="text" name="password"><br>
    <input type="submit">
</form>
</body>
</html>

此時開啟服務(wù)(python manage.py runserver 8090)后,訪問web頁面,會顯示禁止訪問的字樣

那么接下來我們在web表單中設(shè)置csrf標簽

{% csrf_token %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊</title>
</head>
<body>
<form ation="" method="post">
    {# 防止跨站攻擊 #}
    {% csrf_token %}
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="text" name="password"><br>
    <input type="submit">
</form>
</body>
</html>

再來訪問web頁面,發(fā)現(xiàn)用戶名,密碼可以正常提交,且表單中會多一個csrf隱式偽隨機數(shù)

CSRF攻擊是源于WEB的隱式身份驗證機制!WEB的身份驗證機制雖然可以保證一個請求是來自于某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發(fā)送的!

CSRF防御機制思路是在客戶端頁面增加偽隨機數(shù)即可實現(xiàn)比較有效的跨站攻擊防御

四.CSRF(ajax提交)

ajax提交,需要在html中添加以下內(nèi)容

??1 引用jquery

??2 添加防止跨站攻擊標簽

??3 添加ajax提交用button

??4 添加ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊</title>
    {# ??1 引用jquery #}
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<form ation="" method="post">
    {# ??2 防止跨站攻擊 #}
    {% csrf_token %}
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="text" name="password"><br>
<!--    {# 表單提交 #}-->
<!--    <input type="submit">-->

<!--    {# ??3 ajax提交 #}-->
    <input type="button" value="注冊" id="button">
</form>
</body>
</html>
<script>
	{# ??4 ajax #}
    $("#button").click(function(){
        username = $("[name='username']").val();
        password = $("[name='password']").val();
        csrf = $("[type='hidden']").val();
        console.log(username,password,csrf);
        {# $.post("/register/") #}
    });

</script>

此處關(guān)于ajax傳參的方式只介紹了一種,如果還想了解的更深,請移步django之a(chǎn)jax傳參的兩種格式

訪問web頁面后,輸入用戶名,密碼,查看審查元素,控制臺會顯示輸入的用戶名,密碼,以及隱式偽隨機數(shù)

在html中繼續(xù)添加以下內(nèi)容

??5 post提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊</title>
    {# ??1 引用jquery #}
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<form ation="" method="post">
    {# ??2 防止跨站攻擊 #}
    {% csrf_token %}
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="text" name="password"><br>
<!--    {# 表單提交 #}-->
<!--    <input type="submit">-->

<!--    {# ??3 ajax提交 #}-->
    <input type="button" value="注冊" id="button">
</form>
</body>
</html>
<script>
	{# ??4 ajax #}
    $("#button").click(function(){
        username = $("[name='username']").val();
        password = $("[name='password']").val();
        csrf = $("[type='hidden']").val();
        console.log(username,password,csrf);

        {# ??5 post提交 #}
        {# $.post("地址",{參數(shù)},function(返回值){}) #}
        $.post("/user/register/",{'username':username,'password':password,'csrfmiddlewaretoken':csrf},function(data){
            console.log(data)
        })

    });

</script>

視圖層添加以下代碼

??返回ajax請求

# 局部禁止
# @csrf_exempt
def register(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username,password)

        # ??返回ajax請求
        return JsonResponse({'code':1})
        # {'code':1}為自定義值

    return render(request,'register.html')

最后訪問web頁面,ajax請求成功,且成功返回返回值{‘code’:1}

總結(jié)

到此這篇關(guān)于Python djanjo之csrf防跨站攻擊的文章就介紹到這了,更多相關(guān)djanjo csrf防跨站攻擊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何利用Python將html轉(zhuǎn)為pdf、word文件

    如何利用Python將html轉(zhuǎn)為pdf、word文件

    網(wǎng)絡(luò)上存在很多將HTML轉(zhuǎn)換為PDF的軟件和工具,但是大家都知道收費,所以下面這篇文章主要給大家介紹了關(guān)于如何利用Python將html轉(zhuǎn)為pdf、word文件的相關(guān)資料,文中通過示例代碼介紹介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python編寫一個多線程的12306搶票程序的示例

    Python編寫一個多線程的12306搶票程序的示例

    對于很多人來說,搶購火車票人們成了一個令人頭疼的問題,本文主要介紹了Python編寫一個多線程的12306搶票程序的示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Python3 解釋器的實現(xiàn)

    Python3 解釋器的實現(xiàn)

    在本篇內(nèi)容中小編給大家總結(jié)了關(guān)于Python3解釋器的用法以及相關(guān)知識點,需要的朋友們學習下。
    2021-06-06
  • 利用Python matplotlib繪制風能玫瑰圖

    利用Python matplotlib繪制風能玫瑰圖

    這篇文章主要給大家介紹了關(guān)于如何利用Python matplotlib繪制風能玫瑰圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Python3爬蟲全國地址信息

    Python3爬蟲全國地址信息

    今天小編就為大家分享一篇關(guān)于Python3爬蟲全國地址信息,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python多進程通信Queue、Pipe、Value、Array實例

    Python多進程通信Queue、Pipe、Value、Array實例

    這篇文章主要介紹了Python多進程通信Queue、Pipe、Value、Array實例,queue和pipe用來在進程間傳遞消息、Value + Array 是python中共享內(nèi)存映射文件的方法,需要的朋友可以參考下
    2014-11-11
  • python讀取和保存為excel、csv、txt文件及對DataFrame文件的基本操作指南

    python讀取和保存為excel、csv、txt文件及對DataFrame文件的基本操作指南

    最近在做一個項目,必須把結(jié)果保存到excel文件中,下面這篇文章主要給大家介紹了關(guān)于python讀取和保存為excel、csv、txt文件及對DataFrame文件的基本操作指南的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Python檢測和防御DOS攻擊的最簡單方法

    Python檢測和防御DOS攻擊的最簡單方法

    這篇文章主要介紹了Python檢測和防御DOS攻擊,首先講解在CentOS上安裝Python3,理解各個命令的含義,最后介紹了利用Python實現(xiàn)DDOS入侵檢測,需要的朋友可以參考下
    2022-11-11
  • PySpark與GraphFrames的安裝與使用環(huán)境搭建過程

    PySpark與GraphFrames的安裝與使用環(huán)境搭建過程

    這篇文章主要介紹了PySpark與GraphFrames的安裝與使用教程,本文通過圖文并茂實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)

    python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)

    這篇文章主要為大家介紹了python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10

最新評論