文档章节

Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)

o
 osc_gu9d45li
发布于 2019/04/23 17:41
字数 796
阅读 5
收藏 0

精选30+云产品,助力企业轻松上云!>>>

首先这是一个测试的代码

请先在setting页面进行下面操作

注释完成后,开始模拟钓鱼网站的跨站请求伪造操作:

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<form action="" method="post">
    转账人:<input type="text" name="user">
    转账对象:<input type="text" name="to_sb">
    转账金额:<input type="text" name="money">
    <input type="submit" value="转账">
</form>
</body>
</html>

效果如下(很low):

视图代码如下:

def index(request):
    if request.method=='POST':
        user=request.POST.get('user')
        to_sb=request.POST.get('to_sb')
        money=request.POST.get('money')
        #打印一下转账结果
        print('%s给%s转了%s元' % (user,to_sb,money))
        return HttpResponse('转账成功')

    return render(request,'index.html')

 

如果是一个正常的网站,运行结果应该如下:

提交:

后端的结果:

这样是没有任何问题的,但是如果网站没有进行防CSRF攻击(基本不可能,现在的主流网站都有防CSRF攻击),那么钓鱼网站就可以伪装,进行跨站请求伪造

接下来是钓鱼网站的视角:

首先:我看见了下面这个特别low的页面,发现没有防CSRF(等会说防御),直接copy源码

前端代码:

 

 然后自己做一个和原网站一模一样的网站:

 

 简单的模拟一下,网址已经变了

该网址的前端页面代码:

<body>
<form action="http://127.0.0.1:8000/index/" method="post">
    转账人:<input type="text" name="user">
    转账对象:<input type="text" >
    <input type="text" name="to_sb" value="诈骗犯" style="display: none">
    转账金额:<input type="text" name="money">
    <input type="submit" value="转账">
</form>>

 

 和原网址的代码对比,其他不变,但是转账对象的name值被取消了,并且还添加了一个input框,该input框的name值,是原转账对象的name值,value值也被写死,还把该标签隐藏,这样你在转账对象中无论输入什么,你都是白给,因为name='to_sb'的这个标签的值已经被固定了,而且该表单的action函数还是原网站,所以说钓鱼网站的后端不用写post请求来之后的操作。

钓鱼网站的后端代码:

def test(request):

    return render(request, 'test.html')

也就是说,后端逻辑用的原网站的逻辑,只是简单的固定了转账人的值

运行一下:

前端钓鱼页面:

 

 当前网址还是:

转账:

跳到了原网页

看看原网站的打印输出:

 

 这样已经老掉牙的钓鱼网站的模型就完成了

 

防CSRF跨站请求伪造攻击:

1.打开注释

2.在页面中添加:

 

 这样防御就做好了(所以说是老掉牙的钓鱼攻击)

测试一下:

点击转账:

这是因为在添加了{% csrf_token %}之后,该网站的前端代码已经改变了

 

 该value是随机的,刷新一下,值就会改变,也就是说,钓鱼网站不能动态的获取,那么CSRF攻击也就没用了

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
高级配置文件, csrf, django settings源码, django auth模块, 文件配置的插拔式设计

[TOC] 基于jiango中间件思想实现文件配置 通知功能: 邮件, 短信, 微信 importlib模块 仿照django中间件的文件配置方式 notify(Package): init.py, email.py, msg.py, wechat.py 之后新加功能...

osc_0vv1t8wx
2019/12/09
3
0
Django的CSRF

1、什么是CSRF django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。 2、对于CSRF的为什么出现。   1. 钓鱼网站的页面和正经网站的页...

osc_vg6s3gcq
2018/07/17
2
0
django之跨站请求伪造csrf

[TOC] 跨站请求伪造 csrf 钓鱼网站 就类似于你搭建了一个跟银行一模一样的web页面 , 用户在你的网站转账的时候输入用户名 密码 对方账户银行里面的钱确实少了 但是发现收款人变了 原理实现:...

osc_0vv1t8wx
2019/12/05
1
0
django框架之中间件 Auth模块

CBV加装饰器 方式一:装饰器加到想装饰的方法上 方式二:装饰器加到class前面,通过name参数指定被装饰的方法 方式三:重写dispatch(django分发CBV视图函数),直接给dispatch装饰,该类中所...

osc_yk4xbpc4
2019/06/18
2
0
Django之中间件及Auth认证模块

CBV加装饰器 django中间件 什么是中间件? django请求生命周期完整版,中间件类似于django的门卫,数据在进入和离开时都需要经过中间件 中间件能干嘛? 控制用户访问频率,全局登陆校验,用户...

osc_ody5ikmq
2019/06/18
8
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux安装redis服务器和部署

Linux安装redis和部署 第一步:下载安装包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 访问https://redis.io/download 到官网进行下载。这里下载最新的5.0.5版本. 第二步:...

osc_3ytpwpyb
15分钟前
11
0
IF函数,根据条件设定输入内容

if函数通常用于条件判断,根据判断结果执行相应命令。 1.函数解释: IF(logical_test, [value_if_true], [value_if_false]) logical_test 必需。 计算结果为 TRUE 或 FALSE 的任何值或表达式...

osc_sumf8h95
17分钟前
5
0
Pytorch自定义dataloader以及在迭代过程中返回image的name

pytorch官方给的加载数据的方式是已经定义好的dataset以及loader,如何加载自己本地的图片以及label? 形如数据格式为 image1 label1 image2 label2 ... imagen labeln 实验中我采用的数据的...

osc_l8u38961
18分钟前
0
0
灯塔

\[love\ and \ share \] 我怎么感觉变成了好东西推荐呢?算了,本来也差不多 还没写完,想到再更 有好看玩的能不能评论一下,qwq 动漫 大多是些国漫,多在\(b\)站、腾讯视频、盗版小网站能够...

osc_dc6pbw3x
19分钟前
0
0
网易首页 」 网易手机 」 正文 苹果超薄触摸显示技术专利曝光:重新定义轻薄

最近,苹果公司的新屏幕专利技术已经曝光。特别是苹果公司的新型超薄触摸技术,它可以降低显示器的结构水平,消除多余的电路,并使屏幕更薄。该专利表明,这项新技术适用于iPhone,iPad,App...

osc_opzpp18v
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部