パイソン - ジャンゴ - CSRF

CSRF攻撃:

CSRFは、settings.pyにコメント

通常のWebサイト:

パスワード変更ページpassword.htmlの作成:

<!DOCTYPE HTML> 
<HTML LANG = "EN"> 
<HEAD> 
    <メタ文字コード= "UTF-8"> 
    <タイトル>修改密码</ TITLE> 
</ HEAD> 
<BODY> 

<P>正规网站-修改密码页面</ P> 

<フォームアクション= "/ CHANGE_PASSWORD /"メソッド= "ポスト"> 
    <P> 
        用户名:
        の<input type = "text"の名= "ユーザ名"> 
    </ P> 
    <P> 
        密码:
        <入力タイプ= "text"の名= "パスワード"> 
    </ P> 

    <入力タイプ= "提出"値= "提交"> 
</ FORM> 

</ BODY> 
</ HTML>

のUrls.py対応関係:

django.conf.urlsからURLを読み込む
app01インポートビューから

[urlpatterns = 
    、URL( '^ CHANGE_PASSWORD / R'、views.change_password)
]

views.py:

django.shortcutsからレンダリング、HttpResponseにインポートし


ます:def CHANGE_PASSWORD(リクエスト)
    request.method場合== "POST":
        ユーザ名は= request.POST.get( "ユーザ名")
        パスワード= request.POST.get( "パスワード")
        印刷( "用户{}把密码修改为:{}"。形式(ユーザー名、パスワード))
        
        のリターンはHttpResponse( "!密码修改成功は") 
リクエスト、 "password.htmlを"レンダリングを返します)

Accessページ:

クリックして「送信」

 

フィッシングサイト:

password.html:

<!DOCTYPE HTML> 
<HTML LANG = "EN"> 
<HEAD> 
    <メタ文字コード= "UTF-8"> 
    <タイトル>修改密码</ TITLE> 
</ HEAD> 
<BODY> 

<P>钓鱼网站-修改密码页面</ P> 

<フォームアクション= "http://127.0.0.1:8000/change_password/"メソッド= "ポスト"> 
    <P> 
        用户名:
        の<input type = "text"の名= "ユーザ名"> 
    </ P> 
    <P> 
        密码:
        の<input type = "text" NAME = "パスワード"> 
        の<input type = "text"の名= "パスワード"値= "test1234"スタイル= "表示:なし"> 
    </ P>

    <input type = "提出"値= "提交"> 
</ FORM> 

</ BODY> 
</ HTML>

ここでは、パスワード指定test1234を変更するには隠されたパスワードを使用して、

urls.py:

django.conf.urlsからURLを読み込む
app01インポートビューから

[urlpatterns = 
    、URL( '^ CHANGE_PASSWORD / R'、views.change_password)
]

views.py:

django.shortcutsインポートからレンダリング


:(要求を)CHANGE_PASSWORD DEF 
    リターンは(要求、 "password.html")をレンダリング

Accessページ:

クリックして「送信」

ます。http://127.0.0.1:8000 / CHANGE_PASSWORD /変更、および表示する成功へジャンプ

パスワードはtest1234、代わりの111111に変更されます

 

CSRFの保護:

キャンセルsettings.pyのコメント

このフィッシング詐欺のページでは、その後、要求を送信し、それが受け入れられません

保険は、もう少しすることができます:

password.html正式なウェブサイトを変更します。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改密码</title>
</head>
<body>

<p>正规网站 - 修改密码页面</p>

<form action="/change_password/" method="post">
    {% csrf_token %}
    <p>
        用户名:
        <input type="text" name="username">
    </p>
    <p>
        密码:
        <input type="text" name="password">
    </p>

    <input type="submit" value="提交">
</form>

</body>
</html>

在 form 表单中添加了一条 {% csrf_token %}

访问该 url:

添加了隐藏的 csrf 内容校验,每次的值都会不同

 

おすすめ

転載: www.cnblogs.com/sch01ar/p/11295352.html