Python - Django - CSRF
CSRF 攻击:
把 settings.py 中的 csrf 注释掉

正规网站:
创建修改密码页面 password.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改密码</title>
</head>
<body> <p>正规网站 - 修改密码页面</p> <form action="/change_password/" method="post">
<p>
用户名:
<input type="text" name="username">
</p>
<p>
密码:
<input type="text" name="password">
</p> <input type="submit" value="提交">
</form> </body>
</html>
urls.py 中的对应关系:
from django.conf.urls import url
from app01 import views urlpatterns = [
url(r'^change_password/', views.change_password),
]
views.py:
from django.shortcuts import render, HttpResponse def change_password(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
print("用户 {} 把密码修改为:{}".format(username, password)) return HttpResponse("密码修改成功!") return render(request, "password.html")
访问页面:

点击 “提交”


钓鱼网站:
password.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改密码</title>
</head>
<body> <p>钓鱼网站 - 修改密码页面</p> <form action="http://127.0.0.1:8000/change_password/" method="post">
<p>
用户名:
<input type="text" name="username">
</p>
<p>
密码:
<input type="text" name="password">
<input type="text" name="password" value="test1234" style="display: none">
</p> <input type="submit" value="提交">
</form> </body>
</html>
这里用隐藏的 password 把密码修改成指定的 test1234
urls.py:
from django.conf.urls import url
from app01 import views urlpatterns = [
url(r'^change_password/', views.change_password),
]
views.py:
from django.shortcuts import render def change_password(request):
return render(request, "password.html")
访问页面:

点击 “提交”

跳转到: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 内容校验,每次的值都会不同
Python - Django - CSRF的更多相关文章
- pythonのdjango CSRF简单使用
一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...
- python, Django csrf token的问题
环境 Window 7 Python2.7 Django1.4.1 sqlite3 问题 在使用Django搭建好测试环境后,写了一个提交POST表单提交留言的测试页面. 如图: 填写表单,点击“提交 ...
- vue-resource pos提交t数据时碰到Django csrf
最近在用Vue写前端代码,再用vue-resource向后台提交数据.项目后台是用python+Django开发的.下面我就复盘一下我出现问题的经过. 首先,想用vue进行数据交互只能引入vue-re ...
- python Django知识点总结
python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...
- python/ Django之中间件
python/ Django之中间件 一.中间件 中间件共分为: (1)process_request(self,request) (2)process_view(self, request, cal ...
- python Django之Ajax
python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...
- [python] python django web 开发 —— 15分钟送到会用(只能送你到这了)
1.安装python环境 1.1 安装python包管理器: wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py 1. ...
- [原创]Python/Django使用富文本编辑器XHeditor上传本地图片
前言 为了在Django框架下使用Xheditor上传图片,居然折腾了我一个晚上.期间也遇到种种问题,网上相关资料极少.现在把经验分享给大家. 正文 xheditor篇 1.下载http://xhed ...
- pos提交提交数据时碰到Django csrf
我的github(PS:希望star):https://github.com/thWinterSun/v-admin 最近在用Vue写前端代码,再用vue-resource向后台提交数据.项目后台是用 ...
随机推荐
- 洛谷 P816 忠诚 题解
每日一题 day28 打卡 Analysis 这道题用线段树维护区间最小值很简单,因为没有修改所以连lazy_tag都不用,但是这道题可以用树状数组维护区间最小值,非常骚气. 线段树代码: #incl ...
- .net之大文件断点续传
HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...
- asp.net文件夹上传下载组件
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- UVA 11019 Matrix Matcher ( 二维字符串匹配, AC自动机 || 二维Hash )
题目: 传送门 题意: 给你一个 n * m 的文本串 T, 再给你一个 r * c 的模式串 S: 问模式串 S 在文本串 T 中出现了多少次. 解: 法一: AC自动机 (正解) 670ms 把模 ...
- SaltStack 在 Windows 上的操作基础
SaltStack 在 windows上的操作基础 1.删除文件: salt '172.16.3.11' file.remove 'D:\downup\111.msu' 2.删除文件夹 salt '1 ...
- biplot双标图
biplot 双标图 在页面中全部崩溃 句法 biplot(coefs) biplot(coefs,Name,Value) h = biplot(___) 描述 例 biplot(coefs)在矩 ...
- Java 读写文件示例
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class T ...
- 【洛谷】P1275 魔板(暴力&思维)
题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状态.操作的方式有两 ...
- spark学习记录-2
spark编程模型 ====== spark如何工作的? 1.user应用产生RDD,操作变形,运行action操作 2.操作的结果在有向无环图DAG中 3.DAG被编译到stages阶段中 4.每一 ...
- 北漂IT男返乡2年的三线楼市观察(宜昌夷陵篇)-原创
一直想写点什么,这段时间总算有空,好嘞,正好有兴致来写一写楼市相关的文章以饕读者和粉丝朋友. 宜昌?说宜昌您可能不知道,但是说三峡大坝您就知道了 最近这两年,因为小宝的降临,我多半时间待在老家宜昌陪伴 ...