一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

08-Django模板(2)

 印度阿三17 2019-10-13

一、HTML轉(zhuǎn)義

  在視圖中,通過調(diào)用模板傳遞下文,模板對上下文的傳遞字符串進(jìn)行輸出時,會對以下字符自動轉(zhuǎn)義。HTML轉(zhuǎn)義的作用:轉(zhuǎn)義后標(biāo)記代碼不會被直接解釋執(zhí)行,而是被直接呈現(xiàn),防止客戶端通過嵌入js代碼攻擊網(wǎng)站。

小于號 < 轉(zhuǎn)換為 <

大于號 > 轉(zhuǎn)換為 >

單引號 ' 轉(zhuǎn)換為 '

雙引號 " 轉(zhuǎn)換為 "

與符號 & 轉(zhuǎn)換為 &

HTML轉(zhuǎn)義演示:

匹配URL:

 path('zhuanyi/', views.zhuanyi),

視圖:

def zhuanyi(request):
    content = {"text":"<h1>標(biāo)題一</h1>"}
    #調(diào)用模板傳入HTML字符串
    return render(request,"Book/zhuanyi.html",content)

模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轉(zhuǎn)義演示</title>
</head>
<body>
<p>{{ text }}</p>
</body>
</html>

結(jié)果:

?

?我們在視圖傳入的HTML標(biāo)簽沒有被瀏覽器執(zhí)行,就是為了防止js攻擊。在模板渲染的時候進(jìn)行了轉(zhuǎn)義,這樣瀏覽器就不會認(rèn)出來是專屬的標(biāo)簽啦。

禁止HTML轉(zhuǎn)義

{{變量|escape}}

過濾器escape可以實現(xiàn)對變量的HTML轉(zhuǎn)義,默認(rèn)模板就會轉(zhuǎn)義,一般省略。

{{變量|safe}}

過濾器safe:禁用轉(zhuǎn)義,告訴模板這個變量是安全的,可以解釋執(zhí)行。

{% autoescape off %}
.......
{% endautoescape %}

標(biāo)簽autoescape:設(shè)置一段代碼都禁用轉(zhuǎn)義,接收on、off參數(shù)(on:啟用轉(zhuǎn)義,off:禁用轉(zhuǎn)義)

代碼展示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>禁止轉(zhuǎn)義演示</title>
</head>
<body>
{#默認(rèn)會進(jìn)行HTML轉(zhuǎn)義#}
<p style="background: red">{{ text }}</p>
<p>{{ text|safe }}</p>
</body>
</html>

?

?其他備注信息:

  1、對于在模板中硬編碼?<?>?'?"?&?不會被轉(zhuǎn)義

  2、在模板中硬編碼如果希望出現(xiàn)轉(zhuǎn)義的效果,則需要手動編碼轉(zhuǎn)義

二、CSRF

  CSRF全拼為Cross Site Request Forgery,翻譯為跨站請求偽造。CSRF指攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求。包括:以你的名義發(fā)送郵件,發(fā)消息,盜取你的賬號,甚至購買商品,虛擬貨幣轉(zhuǎn)賬.............造成的問題就是,個人隱私泄露以及財產(chǎn)安全。

  CSRF攻擊原理

客戶端訪問服務(wù)器的時候,服務(wù)器沒有做驗證。因此就會出現(xiàn)偽造用戶訪問。

  防止CSRF攻擊

Django默認(rèn)開啟了CSRF安全驗證功能:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #默認(rèn)開啟CSRF驗證
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

現(xiàn)在你在模板中用form表單提交數(shù)據(jù)(或者直接手動提交自己組鍵值),提交數(shù)據(jù)就會返回的頁面是Forbidden(403)。CSRF verification failed.Request aborted。等信息,因此需要在form表單內(nèi)添加CSRF驗證語法:

<form>
{#生成csrftoken進(jìn)行安全驗證,可以在表單內(nèi)的任意位置#}
{% csrf_token %}

</form>

如果不是在表單內(nèi),需要自己組成鍵值對提交進(jìn)行post。表單內(nèi)是表單自動組織鍵值對。

總結(jié)Django提供的CSRF防護(hù)機(jī)制:

1.Django 第一次響應(yīng)來自某個客戶端的請求時,會在服務(wù)器端隨機(jī)生成一個 token,把這個 token 放在 cookie 里。然后每次 POST 請求都會帶上這個 token,這樣就能避免被 CSRF 攻擊。

2.在返回的 HTTP 響應(yīng)的 cookie 里,django 會為你添加一個 csrftoken 字段,其值為一個自動生成的 token

3.在所有的 POST 表單時,必須包含一個 csrfmiddlewaretoken 字段 (只需要在模板里加一個 csrf_token標(biāo)簽, django 就會自動幫我們生成)

4.在處理 POST 請求之前,django 會驗證這個請求的 cookie 里的 csrftoken 字段的值和提 交的表單里的 csrfmiddlewaretoken 字段的值是否一樣。
如果一樣,則表明這是一個合法的請求,否則,這個請求可能是來自于別人的 csrf 攻擊,返回 403 Forbidden.

?

三、驗證碼

  在用戶注冊、登錄頁面,為了防止暴力請求,可以加入驗證碼功能,如果驗證碼錯誤,則不需要繼續(xù)處理,可以減輕服務(wù)器、數(shù)據(jù)庫壓力。網(wǎng)上有很多驗證碼的教程以及庫,方法等。

  服務(wù)器隨機(jī)生成驗證碼,字符串存入session中,讓客戶輸入然后在視圖函數(shù)中調(diào)用數(shù)據(jù)庫中的判斷是否一致。

四、反向解析

  有時候我們的url是不斷變化的,有一個辦法就是url變化,但我還是想得到我要的網(wǎng)頁,那么重定向就是解決這個事情的。

  并且越來越多的視圖,會出現(xiàn)以前的視圖匹配不想要,需要改動,但改動是很麻煩的。因此反向解析能夠很好地解決這些問題。

  反向解析應(yīng)用:模板中的超鏈接,視圖中的重定向

urls.py:(加上一個名字)

   path('booklist/', views.bookList,name="index"),
 
   path('fan/', views.fan,),
#  views.py
def fan(request):
    return render(request,"Book/fan.html")

模板中動態(tài)生成地址:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>反向解析</title>
</head>
<body>
{#反向解析超鏈接,前面關(guān)鍵字url空格加上#}
<a href="{% url "index" %}">跳轉(zhuǎn)到index頁面</a>
</body>
</html>

?

?跳轉(zhuǎn)的頁面如下所示

?

?反向解析--視圖(重定向)

#反向解析
def fan(request):
    return redirect(reverse("index"))

?

??反向解析--正則中取參數(shù)(位置參數(shù))

  re_path("^fan1/(\d )/(\d )/$",views.index,name=fan1),
  # 反向解析:向正則中傳參
  def fan1(request, v1, v2):
      str = '%s--%s'%(v1,v2)
      return HttpResponse(str)
{# 向正則中傳參 #}
<a href="{% url 'fan1' 188 5415 %}">動態(tài)地址和正則傳參跳轉(zhuǎn)到fan1</a>

關(guān)鍵字參數(shù)

  re_path("^(?P<number1>\d )/(?P<number2>\d )/$",views.index),

?

來源:https://www./content-4-507251.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲国产欧美久久精品| 国产传媒中文字幕东京热| 欧美不雅视频午夜福利| 日韩一本不卡在线观看| 91插插插外国一区二区| 最近日韩在线免费黄片| 日韩精品一区二区三区av在线| 国产精品不卡一区二区三区四区 | 亚洲欧美日韩另类第一页| 日韩性生活片免费观看| 午夜小视频成人免费看| 亚洲黄香蕉视频免费看| 色婷婷成人精品综合一区| 国产精品涩涩成人一区二区三区| 国产又粗又爽又猛又黄的| 欧美日韩国产亚洲三级理论片| 亚洲欧美日韩网友自拍| 久久香蕉综合网精品视频| 熟女少妇一区二区三区蜜桃| 国产日韩综合一区在线观看| 国内精品一区二区欧美| 国产精品欧美在线观看| 国产原创中文av在线播放| 日本高清视频在线播放| 成年男女午夜久久久精品| 久久久精品日韩欧美丰满| 手机在线不卡国产视频| 欧美一级黄片免费视频| 日韩不卡一区二区三区色图| 丰满人妻熟妇乱又伦精另类视频| 在线观看日韩欧美综合黄片| 黄色美女日本的美女日人| 蜜桃传媒在线正在播放| 欧美一区二区三区十区| 操白丝女孩在线观看免费高清| 中文字幕一区久久综合| 玩弄人妻少妇一区二区桃花| 成年女人午夜在线视频 | 91国内视频一区二区三区| 黑色丝袜脚足国产一区二区| 成人精品视频在线观看不卡|