ssti模板注入

一、Flask应用

1、介绍

  • 定义
Flask:是一个使用Python编写的轻量级web应用框架。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。
  • 特点

良好的文档、丰富的插件、包含开发服务器和调试器、集成支持单元测试、RESTful请求调度、支持安全cookies、基于Unicode。

  • 用处

Python可以直接用flask启动一个web服务页面。

2、flask基本框架

(在python的venv虚拟环境运行)

from flask import Flask    #启动flask模块,创建一个Flask类
app = Flask(__name__)    #__name__系统变量,指的是py文件的文件名(相当于反序列化中的魔术方法)

@app.route('/')    #路由,相当与路径
def lin1():
    return "sb"

if __name__=='__main__':    #只能被python直接运行,不能作为组件或模块被调用
    app.run()

运行

运行后发现需要去浏览器查看(由于是127.0.0.1所以只能在虚拟机上的浏览器查看,没法在主机查看)

 要在本机上运行,需要改变运行的host

from flask import Flask    #启动flask模块,创建一个Flask类
app = Flask(__name__)

@app.route('/lin1')    #将路径指向lin1
def lin1():
    return "sb"
@app.route('/lin2')
def lin2():
    return "2b"

if __name__=='__main__':
    app.run(debug=True,host="172.16.17.29",port=6000)
    #debug=True:改完文件的配置可以自动生效(建议只在学习中开启,实战有漏洞,导致命令执行)
    #host="172.16.17.29",port=6666:将网址改为172.16.17.29端口改为80使得能在本机上运行

运行

 可以看到访问的地址改变了,且debug已启动(PIN码为562-864-305)

访问lin1

访问lin2

 3、flask变量规则

构建动态url

from flask import Flask   
app = Flask(__name__)

@app.route('/lin1/<name>')    
def lin1(name):    #传入字符型参数name
    return "sb %s" % name

@app.route('/lin2/<int:yourid>')
def lin2(yourid):    #传入整数型参数yourid
    return "id %d" % yourid


@app.route('/lin2/<int:yourmoneny>')
def lin2(yourmoneny):    #传入浮点型参数yourmoneny
    return "id %.2f" % yourmoneny 
  
if __name__=='__main__':
    app.run(debug=True,host="172.16.17.29",port=6000)

效果:

 

4、flask的http方法

扩展:

方法用法
POST用于向指定资源提交数据进行处理请求,例如提交表单或上传文件。数据被包含在请求体中,可能导致新的资源建立或原有资源修改。
GET请求指定的页面信息,并返回实体内容。
HEAD类似于GET,只不过返回的响应中没有具体的内容,仅传输状态行和标题部分,用于获取报头信息。
PUT从客户端向服务器传送的数据取代指定的内容,即向指定的位置上传最新的内容。
DELETE

请求服务器删除Request-URL所标识的资源。

简单的登入界面

新创建一个templates文件夹,在里面放入一个html文件

<html>
    <body>
        <form action = "http://172.16.17.29:6000/login" method = "post">
            <p>Your Name</p>
            <p><input type = "text" name = "name"></p>
            <p><input type = "submit" value = "submit"></p>
        </form>
    </body>
</html>

开始构造flask框架

from flask import Flask,request,redirect,url_for,render_template
import requests
app = Flask(__name__)

@app.route('/')    #登录页面(‘/’)
def index():
    return render_template("index.html")    
#render_template:根据传入的参数和变量,替换模板文件中的占位符,并返回最终的 HTML 内容给客户端。

@app.route('/user/<name>')    #用户页面(‘/user/’)
def user(name):
    return "hello %s" % name

@app.route('/login',methods = ['GET','POST'])    #可以用POST方法也可以用GET方法
def login():
    if request.method == 'POST':
        user = request.form['name']    #request.form['name']:获取表单数据
        return redirect(url_for('user',name = user))    #redirect:重定向到/user/<name>

    else:
        user = request.args.get('name','')
        return redirect(url_for('user',name = user))

if __name__ == '__main__':
    app.run(debug=True,host="172.16.17.29",port = 6000)

运行

POST

GET

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/688690.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go微服务: 关于TCC分布式事务

TCC 分布式事务 T: Try 预处理, 尝试执行&#xff0c;完成所有的业务检查&#xff0c;做好一致性&#xff0c;预留必要的业务资源&#xff0c;做好准隔离性C: Confirm 确认&#xff0c;如果所有的分支Try都成功了, 就到了这个阶段, Confirm 是真正执行业务的过程, 不做任何业务…

VCS基本仿真

这里记录三种仿真方式&#xff1a; 第一种是将verilog文件一个一个敲在终端上进行仿真&#xff1b; 第二种是将多个verilog文件的文件路径整理在一个文件中&#xff0c;然后进行仿真&#xff1b; 第三种是利用makefile文件进行仿真&#xff1b; 以8位加法器为例&#xff1a; …

[Bug]使用Transformers 微调 Whisper出现版本不兼容的bug

错误的现象 ImportError Traceback (most recent call last) <ipython-input-20-6958d7eed552> in () from transformers import Seq2SegTrainingArguments training_args Seq2SeqTrainingArguments( output_dir"./whisper-small-…

第九篇——冗余量:《史记》和《圣经》那个信息量大?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过信息量的对比&#xff0c;引出来冗余度的概念&#xff0c;又深入浅出…

webman中创建udp服务

webman是workerman的web开发框架 可以很容易的开启udp服务 tcp建议使用gatewayworker webman GatewayWorker插件 创建udp服务: config/process.php中加入: return [// File update detection and automatic reloadmonitor > [ ...........], udp > [handler > p…

小米开放式耳机怎么样?倍思、西圣、小米开放式耳机测评比较!

作为一名热衷于分享真实体验的博主&#xff0c;我在过去两年开始接触开放式耳机&#xff0c;并因此受到许多朋友的咨询&#xff0c;询问哪款开放式耳机更加出色。为了找出最佳的开放式耳机&#xff0c;我进行了深入的调查和实地测试。我发现高价并不总是代表高质量&#xff0c;…

计算机网络 期末复习(谢希仁版本)第3章

对于点对点的链路&#xff0c;目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。局域网的传输媒体&#xff0c;包括有线传输媒体和无线传输媒体两个大类&#xff0c;那么有线传输媒体有同轴电缆、双绞线和光纤&#xff1b;无线传输媒体有微波、红…

应急管理大数据指挥中心解决方案(51页PPT)

方案介绍&#xff1a; 本应急管理大数据指挥中心解决方案充分利用了大数据技术的优势&#xff0c;实现了信息的快速收集、分析和决策支持。通过数据融合、协同指挥、智慧化决策和平台建设等方面的努力&#xff0c;提高了应急管理的效率和准确性&#xff0c;为应对各类突发事件…

eclipse连接后端mysql数据库并且查询

教学视频&#xff1a;https://www.bilibili.com/video/BV1mK4y157kE/?spm_id_from333.337.search-card.all.click&vd_source26e80390f500a7ceea611e29c7bcea38本人eclipse和up主不同的地方如下&#xff0c;右键项目名称->build path->configure build path->Libr…

Ubuntu server 24 (Linux) AdGuard Home +SmartDNS 安装配置 搭建去广告快速DNS

一 SmartDNS 安装 &#xff0c;可参考&#xff1a;Ubuntu server 24 (Linux) 安装部署smartdns 搭建智能DNS服务器-CSDN博客 二 安装AdGuard 1 下载地址&#xff1a;GitHub - AdguardTeam/AdGuardHome: Network-wide ads & trackers blocking DNS server 2 解压安装 #下…

算法金 | 不愧是腾讯,问基础巨细节 。。。

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 最近&#xff0c;有读者参加了腾讯算法岗位的面试&#xff0c;面试着重考察了基础知识&#xff0c;并且提问非常详细。 特别是关于Ada…

路由器重启真的好吗?多久重启一次更好?

前言 小白前段时间发现自己家的OpenWRT软路由上网特别慢&#xff0c;有时候通话还有点卡顿。 然而有个朋友用的普通路由器也有类似的问题&#xff0c;而且有时候根本上不去网。 解决的办法很简单&#xff1a;重启路由器。 重启路由器&#xff1f; 但路由器重启是真的好吗&a…

吊车报警的工作原理和使用场景_鼎跃安全

在现代建筑施工过程中&#xff0c;经常使用大型机械设备&#xff0c;如挖掘机、吊车、打桩机等&#xff0c;这些设备在施工过程中发挥着越来越重要的作用&#xff1b;同时&#xff0c;这些设备的作业频繁进行作业&#xff0c;对于接触到高压电线的风险也随之增加。大型机械设备…

R语言探索与分析14-美国房价及其影响因素分析

一、选题背景 以多元线性回归统计模型为基础&#xff0c;用R语言对美国部分地区房价数据进行建模预测&#xff0c;进而探究提高多元回 归线性模型精度的方法。先对数据进行探索性预处理&#xff0c;随后设置虚拟变量并建模得出预测结果&#xff0c;再使用方差膨胀因子对 多重共…

Linux.软件操作

1.yum 命令 要连网 2.systemctl 命令控制软件的启动和关闭 3.ln 创建软连接 使用cat来找本体&#xff0c;看看链接生不生效 4.date 命令查看系统时间 格式化的时候可以用双引号把他们引出来 -d 对时间进行修改 修改时区 自动校准 手动校准 5.ifconfig 查看本机的ip地址 6.h…

钉钉二次开发-企业内部系统集成官方OA审批流程

场景&#xff1a;企业内部开发人员不足&#xff0c;需要从以前集成Activiti的方式转换成集成钉钉官方OA审批流程&#xff0c;提高开发效率和系统稳定性。 摘要&#xff1a;企业内部系统集成Acitiviti开源工作流存在的问题&#xff1a; 1. 企业需要单独搭建工作流服务&#xff…

Echarts 在指定部分做文字标记

文章目录 需求分析1. demo1样式调整2. demo22. demo3 定位解决需求 实现在Echarts的折线图中,相同Y值的两点之间显示’abc’ 分析 1. demo1 使用 ECharts 的 markLine 功能来在相邻两个点之间添加标记。其中,我们通过设置标记的 yAxis 和 label 来控制标记的位置和显示内…

霸气的短视频:成都科成博通文化传媒公司

霸气的短视频&#xff1a;瞬间的力量与魅力 在数字化浪潮中&#xff0c;短视频以其独特的魅力迅速崛起&#xff0c;成为社交媒体的新宠。而在众多短视频中&#xff0c;那些充满霸气、让人热血沸腾的作品&#xff0c;总能引起广泛的关注和讨论。成都科成博通文化传媒公司将从内…

Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

目录 写在前面Nginx03案例1 模拟视频下载网站自动索引autoindex基础认证auth_basic模块状态stub_status模块模块小结 案例2 动态网站&#xff08;部署php代码&#xff09;概述常见的动态网站的架构LNMP架构流程数据库Mariadb安装安全配置基本操作 PHP安装php修改配置文件 Nginx…

【面试八股总结】内存页面置换算法

参考资料&#xff1a;小林coding、阿秀 缺页中断 在 CPU 里访问一条 Load M 指令&#xff0c;然后 CPU 会去找 M 所对应的页表项。如果该页表项的状态位是「有效的」&#xff0c;那 CPU 就可以直接去访问物理内存了&#xff0c;如果状态位是「无效的」&#xff0c;则 CPU 则会…