Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模…
2019-04-25 06:56:15来源:博客园 阅读 ()
首先这是一个测试的代码
请先在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攻击也就没用了
原文链接:https://www.cnblogs.com/98WDJ/p/10757789.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- Django基本知识 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
- django框架使用及创建项目 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash