最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django csrf校驗的實現

 更新時間:2021年05月10日 10:18:10   作者:Hank·Paul  
這篇文章主要介紹了Django csrf校驗的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

引入:

通常,釣魚網站本質是本質搭建一個跟正常網站一模一樣的頁面,用戶在該頁面上完成轉賬功能

轉賬的請求確實是朝著正常網站的服務端提交,唯一不同的在于收款賬戶人不同。

如果想模擬一個釣魚網站,就可是給用戶書寫一個form表單 對方賬戶的input框沒有name屬性,然后你自己悄悄提前寫好了一個具有默認的并且是隱藏的具有name屬性的input框。

如果想解決這個問題,當轉賬請求發(fā)送給服務端后,服務端會給各臺機器返回一個隨機實時字符串。下一次,如果還有請求向服務端發(fā)時,服務端會校驗字符串,若對不上的話服務端就拒絕訪問。這就是csrf校驗。

那么form表單如何進行csrf校驗呢?

你只需要在你的form表單內寫一個{% csrf_token %}就可以了

Ajax請求設置csrf_token的三種方式

示例:

urls.py

urlpatterns = [
    url(r'^transfer/', views.transfer),
]

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

第三種方式的js文件(官方文檔套用就行了)

function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = jQuery.trim(cookies[i]);
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
  // these HTTP methods do not require CSRF protection
  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

views.py

def transfer(request):
    if request.method =='POST':
        username = request.POST.get('username')
        target_user = request.POST.get('target_user')
        money = request.POST.get('money')
        print('%s 給 %s 轉賬 %s元' %(username,target_user,money))
    return render(request,'transfer.html')

前端頁面 transfer.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link  rel="external nofollow"  rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<form action="" method="post">
    {% csrf_token %}
    <p>username:<input type="text" name="username"></p>
    <p>target_user:<input type="text" name="target_user"></p>
    <p>money:<input type="text" name="money"></p>
    <input type="submit">
</form>
<button id="d1">發(fā)送ajax請求</button>


{% load static %}
<script src="{% static 'myfile.js' %}"></script>
<script>
    $('#d1').click(function () {
        $.ajax({
            url:'',
            type:'post',
            // 第一種方式 自己手動獲取
            {#data:{'username':'jason','csrfmiddlewaretoken':$('input[name="csrfmiddlewaretoken"]').val()},#}
            // 第二種方式 利用模板語法
            {#data:{'username':'jason','csrfmiddlewaretoken':'{{ csrf_token }}'},#}
            // 第三種     通用方式 引入外部js文件
            data:{'username':'hank'},
            success:function (data) {
                alert(data)
            }
        })
    })
</script>
</body>
</html>

csrf裝飾器

csrf裝飾器作用在FBV上

裝飾器模塊導入:

from django.views.decorators.csrf import csrf_exempt,csrf_protect

當我們網站整體都校驗csrf的時候 我想讓某幾個視圖函數不校驗

@csrf_exempt #給哪個視圖函數加上,就不給哪個視圖校驗csrf

當我們網站整體都不校驗csrf的時候 我想讓某幾個視圖函數校驗

@csrf_protect  #給哪個視圖函數加上,就給哪個視圖校驗csrf

注意:驗證同時需要把'django.middleware.csrf.CsrfViewMiddleware'注銷掉

csrf裝飾器作用在CBV上

當我們網站整體都不校驗csrf的時候 我想讓某幾個視圖函數校驗

from django.views import View
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt,csrf_protect


# @method_decorator(csrf_protect,name='post')  #第二種指名道姓地給某給方法裝
class MyHome(View):
    @method_decorator(csrf_protect)  #第三種 給類中所有的方法都裝
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request,*args,**kwargs)

    def get(self,request):
        return HttpResponse('get')
    # @method_decorator(csrf_protect)   #第一種方式
    def post(self,request):
        return HttpResponse('post')

注意:驗證同時需要把'django.middleware.csrf.CsrfViewMiddleware'注銷掉

當我們網站整體都校驗csrf的時候 我想讓某幾個視圖函數不校驗

總結:給CBV加裝飾器 推薦使用模塊method_decorator

csrf_exempt 只能給dispatch方法裝

到此這篇關于Django csrf校驗的實現的文章就介紹到這了,更多相關Django csrf校驗內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • python庫fire使用教程

    python庫fire使用教程

    本文主要介紹了python庫fire使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Python全景系列之控制流程盤點及進階技巧

    Python全景系列之控制流程盤點及進階技巧

    這篇文章主要為大家介紹了Python全景系列之控制流程盤點及進階技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • pytorch 如何把圖像數據集進行劃分成train,test和val

    pytorch 如何把圖像數據集進行劃分成train,test和val

    這篇文章主要介紹了pytorch 把圖像數據集進行劃分成train,test和val的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python獲取女友聊天記錄詳細流程

    Python獲取女友聊天記錄詳細流程

    就在前段時間,在大學睡我上鋪的兄弟,在兄嘚群里討論,說:他發(fā)現女朋友這幾天只要下班就坐在電腦前,不是工作原因。而且只要他靠近一點就會立即退出頁面,所以他一直很懷疑,在群里問我們這一個個單身狗。然后就出現下面這一段對話
    2021-10-10
  • tensorflow 環(huán)境變量設置方式

    tensorflow 環(huán)境變量設置方式

    今天小編就為大家分享一篇tensorflow 環(huán)境變量設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建

    Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建

    這篇文章主要介紹了Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Django對數據庫進行添加與更新的例子

    Django對數據庫進行添加與更新的例子

    今天小編就為大家分享一篇Django對數據庫進行添加與更新的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python threading模塊的使用指南

    python threading模塊的使用指南

    python的thread模塊是底層的模塊,python的threading模塊是對thread做了一些包裝的,可以更加方便的被使用。本文詳細的講述了threading模塊的用法
    2021-06-06
  • 詳解python中文編碼問題

    詳解python中文編碼問題

    一直以來python中文編碼是個及其頭大的問題,需要好好學習下,我用python為例,簡單介紹下python編程時如何處理好中文編碼的問題,感興趣的朋友們可以參考下
    2021-06-06
  • Python 中Operator模塊的使用

    Python 中Operator模塊的使用

    這篇文章主要介紹了Python 中Operator模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01

最新評論

腾冲县| 台中县| 章丘市| 额济纳旗| 阜平县| 金溪县| 肥乡县| 栾川县| 仙游县| 泸西县| 扎赉特旗| 平顶山市| 施甸县| 喀喇沁旗| 广安市| 辽阳县| 开封市| 宜君县| 柳林县| 南皮县| 九龙坡区| 凭祥市| 曲阜市| 垦利县| 原平市| 股票| 临漳县| 洛南县| 潼关县| 巴塘县| 绵阳市| 肇州县| 家居| 康定县| 响水县| 惠水县| 顺昌县| 安西县| 鹤山市| 都安| 新郑市|