中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做網(wǎng)站哪一部分用到Javaseo教程視頻

做網(wǎng)站哪一部分用到Java,seo教程視頻,深圳做網(wǎng)站建設(shè),中國紀檢監(jiān)察網(wǎng)站首頁目錄 一、csrf跨站請求偽造詳解 二、csrf跨域請求偽造 【1】正常服務(wù)端 【2】釣魚服務(wù)端 三、csrf校驗 【介紹】 form表單中進行csrf校驗: 【1】form表單如何校驗 【2】ajax如何校驗 四、csrf相關(guān)裝飾器 【1】csrf_protect裝飾器: 【…

目錄

一、csrf跨站請求偽造詳解????????

二、csrf跨域請求偽造

【1】正常服務(wù)端

【2】釣魚服務(wù)端

三、csrf校驗

【介紹】

form表單中進行csrf校驗:

【1】form表單如何校驗

【2】ajax如何校驗

四、csrf相關(guān)裝飾器

【1】csrf_protect裝飾器:

【2】csrf_exempt裝飾器:

【3】FBV中使用上述裝飾器

【4】CBV中使用上述裝飾器

(1)??csrf_protect

(2)??csrf_exempt方法


一、csrf跨站請求偽造詳解????????

  • CSRF(Cross-Site Request Forgery)跨站請求偽造是一種常見的網(wǎng)絡(luò)攻擊方式。
  • 攻擊者通過誘導受害者訪問惡意網(wǎng)站或點擊惡意鏈接
    • 將惡意請求發(fā)送到目標網(wǎng)站上
    • 利用受害者在目標網(wǎng)站中已登錄的身份來執(zhí)行某些操作
    • 從而達到攻擊的目的。
  • 舉個例子
    • 假設(shè)受害者在一家網(wǎng)銀網(wǎng)站上登錄賬戶,然后繼續(xù)瀏覽其他網(wǎng)頁。
    • 同時,攻擊者通過電子郵件等方式向受害者發(fā)送了一封包含惡意鏈接的郵件。
    • 當受害者點擊該鏈接時,潛在的威脅就會變得非?,F(xiàn)實。
    • 該鏈接指向一個由攻擊者操縱的網(wǎng)站,該網(wǎng)站上的惡意代碼會自動向網(wǎng)銀網(wǎng)站發(fā)送一個請求,請求轉(zhuǎn)賬到攻擊者的賬戶。
    • 由于受害者在網(wǎng)銀網(wǎng)站中已經(jīng)登錄,所以該請求會被認為是合法的,這樣攻擊者就可以成功地進行轉(zhuǎn)賬操作。
  • 要保護自己免受CSRF攻擊,網(wǎng)站開發(fā)者可以采取以下措施:
    • 使用CSRF令牌:
      • 在用戶的請求中添加隨機生成的令牌,并將該令牌保存在用戶會話中。
      • 每次提交請求時都會驗證該令牌,以確保請求是合法的。
    • 啟用SameSite屬性:
      • 將Cookie的SameSite屬性設(shè)置為Strict或Lax,以限制跨站請求。
      • 這可以在一定程度上緩解CSRF攻擊。
    • 嚴格驗證請求來源:
      • 服務(wù)器端可以驗證請求的來源是否為預期的網(wǎng)站域名
      • 例如檢查HTTP Referer頭部。
    • 使用驗證碼:
      • 在敏感操作(如轉(zhuǎn)賬、更改密碼等)上使用驗證碼
      • 增加用戶身份驗證的防護。

二、csrf跨域請求偽造

  • 釣魚網(wǎng)站
    • 搭建一個類似正規(guī)網(wǎng)站的頁面
    • 用戶點擊網(wǎng)站鏈接,給某個用戶打錢
    • 打錢的操作確確實實提交給了中國銀行的系統(tǒng),用戶的錢也確實減少
    • 但是唯一不同的是,賬戶打錢的賬戶不是用戶想要打錢的目標賬戶,變成了其他用戶
  • 內(nèi)部本質(zhì)
    • 在釣魚網(wǎng)站的頁面針對對方賬戶,只給用戶提供一個沒有name屬性的普通input框
    • 然后在內(nèi)部隱藏一個已經(jīng)寫好帶有name屬性的input框
  • 如何避免上面的問題
    • csrf跨域請求偽造校驗
      • 網(wǎng)站在給用戶返回一個具有提交數(shù)據(jù)功能的頁面的時候會給這個頁面加一個唯一標識
      • 當這個頁面后端發(fā)送post請求的時候,我們后端會先校驗唯一標識
        • 如果成功則正常執(zhí)行
        • 如果唯一標識不符合則拒絕連接(403 forbidden)

【1】正常服務(wù)端

  • 前端
<h1>這是正規(guī)的網(wǎng)站</h1><form action="" method="post"><p>當前賬戶 :>>>> <input type="text" name="start_user"></p><p>目標賬戶 :>>>> <input type="text" name="end_user"></p><p>轉(zhuǎn)賬金額 :>>>> <input type="text" name="money"></p><input type="submit">
</form>
  • 后端?
def transform_normal(request):if request.method == "POST":user_start = request.POST.get("start_user")user_end = request.POST.get("end_user")money = request.POST.get("money")return HttpResponse(f"當前賬戶 :>>> {user_start} 向目標用戶 :>>> {user_end} 轉(zhuǎn)賬了 :>>> {money}")return render(request, 'transform_normal.html')

?【2】釣魚服務(wù)端

  • 前端
<h1>這是釣魚的網(wǎng)站</h1><form action="http://127.0.0.1:8000/transform_normal/" method="post"><p>當前賬戶 :>>>> <input type="text" name="start_user" ></p><p>目標賬戶 :>>>> <input type="text"></p><p><input type="text" name="end_user" value="Hopes" style="display: none"></p><p>轉(zhuǎn)賬金額 :>>>> <input type="text" name="money"></p><input type="submit">
</form>
  • 后端
def transform_normal(request):if request.method == "POST":user_start = request.POST.get("start_user")user_end = request.POST.get("end_user")money = request.POST.get("money")return HttpResponse(f"當前賬戶 :>>> {user_start} 向目標用戶 :>>> {user_end} 轉(zhuǎn)賬了 :>>> {money}")return render(request, 'transform_normal.html')

三、csrf校驗

【介紹】

  • csrf校驗是一種用于防止跨站請求偽造(Cross-Site Request Forgery)攻擊的安全措施

form表單中進行csrf校驗:

添加CSRF Token字段:

  • 在form表單中添加一個隱藏字段,用于存儲CSRF Token的值。
  • 后端服務(wù)器在渲染表單時生成一個CSRF Token,并將其存儲在會話中或者以其他方式關(guān)聯(lián)到當前用戶。
  • 當用戶提交表單時,前端將CSRF Token的值包含在請求中。
  • 后端在驗證表單數(shù)據(jù)時,檢查請求中的CSRF Token是否與存儲的Token匹配,如果不匹配,則拒絕請求。

設(shè)置Cookie:

  • 后端服務(wù)器在渲染表單時,在客戶端設(shè)置一個包含隨機生成的CSRF Token的Cookie。
  • 當用戶提交表單時,表單數(shù)據(jù)會被一同發(fā)送到服務(wù)器,并自動包含該Cookie。
  • 后端在驗證表單數(shù)據(jù)時,檢查請求中的CSRF Token是否與Cookie中的值匹配,如果不匹配,則拒絕請求。

雙重Cookie校驗:

  • 后端服務(wù)器在渲染表單時,在Cookie中設(shè)置一個隨機生成的CSRF Token,并將其存儲在會話中或以其他方式關(guān)聯(lián)到當前用戶。
  • 當用戶提交表單時,表單數(shù)據(jù)會被一同發(fā)送到服務(wù)器,請求頭或請求參數(shù)中攜帶一個包含CSRF Token的自定義字段。
  • 后端在驗證表單數(shù)據(jù)時,同時檢查請求中的CSRF Token和Cookie中的值是否匹配,如果不匹配,則拒絕請求。

【1】form表單如何校驗

  • 在form表單上面加上csrf_token
{% csrf_token %}
<form action="" method="post"><p>username:<input type="text" name="username"></p><p>transfer_user<input type="password" name="password"></p><p>money<input type="text" name="money"></p><input type="submit">
</form>
  • 在頁面標簽中會自動出現(xiàn)一個標簽
<input type="hidden" name="csrfmiddlewaretoken" value="zQaNPZsy1tVmLdqC7GIDOOOfR7yT9YfO58lJ5yrjZfTw2edZTrVYUllOVMnkwXKe">

【2】ajax如何校驗

  • 方式一
    • 利用標簽查找獲取頁面上的隨機字符串
    • 鍵必須叫?csrfmiddlewaretoken
<button id="b1">ajax請求提交</button><script>$("#b1").click(function () {$.ajax({url: '',type: 'post',// (1) 利用標簽查找獲取頁面上的隨機字符串data: {"username": "dream","csrfmiddlewaretoken":$('[csrfmiddlewaretoken]').val()},success: function () {}})})
</script>
  • 方式二
    • 利用模板語法進行快捷引入
<button id="b1">ajax請求提交</button><script>$("#b1").click(function () {$.ajax({url: '',type: 'post',// (2) 利用模板語法提供的快捷書寫data: {"username": "dream", "csrfmiddlewaretoken": "{{ csrf_token }}"},success: function () {}})})
</script>
  • 方式三
    • 定義一個js文件并引入
    • 導入該配置文件之前,需要先導入jQuery,因為這個配置文件內(nèi)的內(nèi)容是基于jQuery來實現(xiàn)的
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 protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}$.ajaxSetup({beforeSend: function (xhr, settings) {if (!csrfSafeMethod(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken);}}
});
<button id="b1">ajax請求提交</button><script>$("#b1").click(function () {$.ajax({url: '',type: 'post',// (3) 定義外部js文件并引入到本地data: {"username": "dream"},success: function () {}})})
</script>

四、csrf相關(guān)裝飾器

  1. 網(wǎng)站整體部分校驗csrf,部分不校驗csrf
  2. 網(wǎng)站整體全部校驗csrf,部分不校驗csrf

【1】csrf_protect裝飾器:

  • csrf_protect裝飾器用于需要進行CSRF保護的視圖函數(shù)或類視圖。
  • 當一個視圖被csrf_protect裝飾器修飾時,Django會對該視圖接收到的所有POST、PUT、DELETE等非安全HTTP方法的請求進行CSRF校驗。
  • 如果請求中沒有有效的CSRF令牌或令牌校驗失敗,Django將返回403 Forbidden響應(yīng)。

【2】csrf_exempt裝飾器:

  • csrf_exempt裝飾器用于不需要進行CSRF保護的視圖函數(shù)或類視圖。
  • 當一個視圖被csrf_exempt裝飾器修飾時,Django將不會對該視圖接收到的任何請求進行CSRF校驗。
  • 這個裝飾器主要用于一些特殊情況,比如與第三方系統(tǒng)進行集成、開放API接口等。

【3】FBV中使用上述裝飾器

from django.views.decorators.csrf import csrf_protect, csrf_exempt
'''
csrf_protect  需要校驗
csrf_exempt   忽視校驗
'''
  • 當我們沒有注釋掉csrf校驗中間件的時候,可以在函數(shù)頭上加上?@csrf_exempt?忽視校驗

  • 當我們注釋掉csrf校驗中間件的時候,可以在函數(shù)頭上加上?@csrf_protect?強制啟動校驗

【4】CBV中使用上述裝飾器

from django.views.decorators.csrf import csrf_protect, csrf_exempt
'''
csrf_protect  需要校驗針對 csrf_protect 符合之前的裝飾器的三種用法
csrf_exempt   忽視校驗針對 csrf_exempt 只能給 dispatch 方法加才有效
'''

(1)??csrf_protect

  • (1) 方式一
    • 給指定方法加@method_decorator
from django.views import View
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.utils.decorators import method_decoratorclass MyCsrf(View):def get(self, request):return HttpResponse("get")@method_decorator(csrf_protect)def post(self, request):return HttpResponse("post")
  • (2) 方式二
    • 給類加然后指明方法?@method_decorator
from django.views import View
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.utils.decorators import method_decorator@method_decorator(csrf_protect)
class MyCsrf(View):def get(self, request):return HttpResponse("get")def post(self, request):return HttpResponse("post")
  • (3) 方式三
    • 重寫?dispatch?方法
from django.views import View
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.utils.decorators import method_decoratorclass MyCsrf(View):@method_decorator(csrf_protect)def dispatch(self, request, *args, **kwargs):return super(MyCsrf, self).dispatch(request, *args, **kwargs)def get(self, request):return HttpResponse("get")def post(self, request):return HttpResponse("post")

(2)??csrf_exempt方法

  • 只有重寫?dispatch方法 有效
from django.views import View
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.utils.decorators import method_decoratorclass MyCsrf(View):@method_decorator(csrf_exempt)def dispatch(self, request, *args, **kwargs):return super(MyCsrf, self).dispatch(request, *args, **kwargs)def get(self, request):return HttpResponse("get")def post(self, request):return HttpResponse("post")
http://m.risenshineclean.com/news/64684.html

相關(guān)文章:

  • 3合一網(wǎng)站怎么做江蘇搜索引擎優(yōu)化公司
  • 政府網(wǎng)站建設(shè)工作調(diào)研提綱2023免費推廣入口
  • 深圳網(wǎng)站建設(shè)民治大道建設(shè)一個網(wǎng)站的具體步驟
  • 公司請外包做的網(wǎng)站怎么維護廣州網(wǎng)站設(shè)計制作
  • 做紅包圖片的網(wǎng)站貴陽網(wǎng)絡(luò)推廣外包
  • python 網(wǎng)站開發(fā) 案例阿里云搜索引擎網(wǎng)址
  • 宅男做網(wǎng)站12月30日疫情最新消息
  • 電子商務(wù)網(wǎng)站建設(shè)項目杭州seo平臺
  • 網(wǎng)站上做銷售網(wǎng)點怎么做網(wǎng)頁設(shè)計圖
  • 深圳網(wǎng)站建設(shè)定制開發(fā) 超凡科技sem廣告
  • 漢中建筑信息平臺網(wǎng)站關(guān)鍵詞優(yōu)化系統(tǒng)
  • 哪個網(wǎng)站可以發(fā)寶貝鏈接做宣傳疫情最新數(shù)據(jù)消息
  • 北海做網(wǎng)站網(wǎng)站建設(shè)免費網(wǎng)站收錄入口
  • 杭州市江干建設(shè)局網(wǎng)站seo體系百科
  • 做神馬網(wǎng)站優(yōu)化如何建網(wǎng)站詳細步驟
  • 中國十大著名戰(zhàn)略咨詢公司福州seo建站
  • pc做任務(wù)賺錢的網(wǎng)站優(yōu)化搜狗排名
  • 服務(wù)器維護網(wǎng)站建設(shè)教程網(wǎng)絡(luò)營銷策略分析
  • 怎么做漫畫網(wǎng)站個人在百度上發(fā)廣告怎么發(fā)
  • 東莞企業(yè)網(wǎng)站建設(shè)預算大概多少seo軟件簡單易排名穩(wěn)定
  • 路由器當服務(wù)器做網(wǎng)站搜索引擎調(diào)詞工具哪個好
  • 邢臺做網(wǎng)站地方宣傳推廣方式
  • 在線做文檔的網(wǎng)站百度推廣登錄官網(wǎng)
  • 專門做金融培訓的網(wǎng)站有哪些臨沂seo排名外包
  • ifront做原型控件的網(wǎng)站軟文發(fā)稿系統(tǒng)
  • 網(wǎng)站界面用什么做的愛站網(wǎng)的關(guān)鍵詞是怎么來的
  • 在哪給人做網(wǎng)站企業(yè)如何做網(wǎng)站
  • 中國攝影官方網(wǎng)站思億歐seo靠譜嗎
  • 重慶大足網(wǎng)站建設(shè)百度搜索風云榜總榜
  • 門戶建設(shè)開源軟件沈陽關(guān)鍵詞seo