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):    #傳入字符型參數namereturn "sb %s" % name@app.route('/lin2/<int:yourid>')
def lin2(yourid):    #傳入整數型參數youridreturn "id %d" % yourid@app.route('/lin2/<int:yourmoneny>')
def lin2(yourmoneny):    #傳入浮點型參數yourmonenyreturn "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

結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24194.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手機短信刪除怎么恢復?快速找回的3個秘密武器

手機&#xff0c;這個我們每天離不開的小玩意兒&#xff0c;有時候也會讓我們頭疼不已。比如&#xff0c;你一不小心&#xff0c;或者為了清理點空間&#xff0c;就把那些重要的短信給刪了。這些短信可能是你和好友的深夜聊天&#xff0c;或者是重要的工作信息。一旦刪除&#…

人工智能就業方向有哪些?

人工智能就業方向有哪些? 隨著人工智能技術的不斷發展&#xff0c;其應用領域也越來越廣泛。對于想要進入人工智能領域的年輕人來說&#xff0c;選擇一個合適的職業方向是至關重要的。今天給大家介紹六個熱門的人工智能就業方向&#xff0c;分別是機器學習工程師、自然語言處理…

Webshell檢測初識

最近在研究webshell檢測的小東西&#xff0c;所以開啟一個專門記錄webshell檢測工具開發的專欄&#xff0c;若有遺漏之處&#xff0c;請大佬們指出。 本篇大致了解以下內容 什么是webshll&#xff1f;有哪些類型&#xff1f;各自有什么不同&#xff1f;Webshell有哪些常見的檢測…

鼠標側鍵映射虛擬桌面切換 —— Win11

鼠標側鍵映射虛擬桌面切換 —— Win11 基于 AutoHotkey 實現功能 下載軟件 AutoHotkey建議安裝在默認路徑下&#xff08;C盤&#xff09; 此軟件非常小&#xff0c;幾乎不占用資源軟件安裝在默認路徑以外的位置可能導致部分功能不可用 新建一個 .ahk 文件使用記事本打開該 .a…

哪款開放式耳機佩戴最舒服?2024五款備受推崇產品分享!

?在現今耳機市場&#xff0c;開放式耳機憑借其舒適的佩戴體驗和獨特的不入耳設計&#xff0c;備受消費者追捧。它們不僅讓你在享受音樂時&#xff0c;仍能察覺周圍的聲音&#xff0c;確保與人交流無障礙&#xff0c;而且有利于耳朵的衛生與健康。對于運動愛好者和耳機發燒友而…

GIGE 協議摘錄 —— 引導寄存器(四)

系列文章目錄 GIGE 學習筆記 GIGE 協議摘錄 —— 設備發現&#xff08;一&#xff09; GIGE 協議摘錄 —— GVCP 協議&#xff08;二&#xff09; GIGE 協議摘錄 —— GVSP 協議&#xff08;三&#xff09; GIGE 協議摘錄 —— 引導寄存器&#xff08;四&#xff09; GIGE 協議…

Flutter Dismissible 屬性介紹及使用指南

在移動應用開發中&#xff0c;滑動刪除是一種常見的交互方式。Flutter 提供了一個強大的小部件 Dismissible&#xff0c;使得實現這一功能變得非常簡單。本文將介紹 Dismissible 的主要屬性及其使用方法。 1. Dismissible 簡介 Dismissible 是一個 Flutter 小部件&#xff0c…

前后端實現文件上傳進度條-實時進度

后端接口代碼&#xff1a; PostMapping("/upload")public ResponseEntity<String> handleFileUpload(RequestParam("file") MultipartFile file) {try {// 獲取文件名String fileName file.getOriginalFilename();// 創建上傳目標路徑Path targetPa…

基于簡單Agent對醫療數據進行分析

數據表 供應商資格審核規定.pdf 醫生名錄.xlsx 歷史就診記錄.xlsx 患者信息名錄.xlsx 藥品.xlsx 藥品庫存管理.xlsx 采購單位基本信息.xlsx Agent測試 模型基于ChatGPT-3.5 問題&#xff1a;幫我找出不達標的供應商 Agent分析過程 [Thought: 0] Key Concepts: - 不達標的供…

P7 品牌管理

逆向生成頁面 新增菜單—商品系統的品牌管理 —product/brand 在代碼生成器得到的文件中&#xff0c; main-resources-src-views-modules-product brand.vue、brand-add-or-update.vue放到category.vue同級vue文件有新增、刪除按鈕&#xff0c;但頁面未顯示&#xff0c;是因…

嵌入式Linux系統中RTC應用的操作詳解

第一:RTC的作用以及時間簡介 “RTC”的英文全稱是Reul-Time Clock,翻譯過來是實時時鐘芯片.實時時鐘芯片是日常生活中應用最為廣泛的電子器件之一,它為人們或者電子系統提供精確的實時時間,實時時鐘芯片通過引腳對外提供時間讀寫接口,通常內部帶有電池,保證在外部系統關…

【Android】使用EventBus進行線程間通訊

EventBus 簡介 EventBus&#xff1a;github EventBus是Android和Java的發布/訂閱事件總線。 簡化組件之間的通信 解耦事件發送者和接收者 在 Activities, Fragments, background threads中表現良好 避免復雜且容易出錯的依賴關系和生命周期問題 Publisher使用post發出…

好書推薦-人工智能數學基礎

本書以零基礎講解為宗旨&#xff0c;面向學習數據科學與人工智能的讀者&#xff0c;通俗地講解每一個知識點&#xff0c;旨在幫助讀者快速打下數學基礎。    全書分為 4 篇&#xff0c;共 17 章。其中第 1 篇為數學知識基礎篇&#xff0c;主要講述了高等數學基礎、微積分、泰…

鴻蒙Ability Kit(程序框架服務)【應用啟動框架AppStartup】

應用啟動框架AppStartup 概述 AppStartup提供了一種更加簡單高效的初始化組件的方式&#xff0c;支持異步初始化組件加速應用的啟動時間。使用啟動框架應用開發者只需要分別為待初始化的組件實現AppStartup提供的[StartupTask]接口&#xff0c;并在[startup_config]中配置App…

Open vSwitch 數據包處理流程

一、Open vSwitch 數據包轉發模式 Open vSwitch 根據不同的模塊使用&#xff0c;主要分為兩種數據包的轉發模式&#xff1a;Datapath 模式和 DPDK 模式&#xff0c;這兩種模式的主要區別在于&#xff1a; Datapath 模式&#xff1a; 使用內核空間的網絡棧進行數據包的轉發性能相…

理解和實現 LRU 緩存置換算法

引言 在計算機科學中&#xff0c;緩存是一種用于提高數據訪問速度的技術。然而&#xff0c;緩存空間是有限的&#xff0c;當緩存被填滿時&#xff0c;就需要一種策略來決定哪些數據應該保留&#xff0c;哪些應該被淘汰。LRU&#xff08;最近最少使用&#xff09;算法是一種廣泛…

UML實現圖-部署圖

概述 部署圖(Deployent Diagram)描述了運行軟件的系統中硬件和軟件的物理結構。部署圖中通常包含兩種元素:節點和關聯關系&#xff0c;部署圖中每個配置必須存在于某些節點上。部署圖也可以包含包或子系統。 節點是在運行時代表計算機資源的物理元素。節點名稱有兩種:簡單名和…

android studio開發時提示 TLS 握手錯誤解決辦法

我用的是windows&#xff0c;遇到了這錯誤&#xff0c; The server may not support the clients requested TLS protocol versions: (TLSv1.2, TLSv1.3). You may need to configure the client to allow other protocols to be used. For more on this, please refer to http…

蒼穹外賣筆記-08-套餐管理-增加,刪除,修改,查詢和起售停售套餐

套餐管理 1 任務2 新增套餐2.1 需求分析和設計接口設計setmeal和setmeal_dish表設計 2.2 代碼開發2.2.1 根據分類id查詢菜品DishControllerDishServiceDishServiceImplDishMapperDishMapper.xml 2.2.2 新增套餐接口SetmealControllerSetmealServiceSetmealServiceImplSetmealMa…

c++替換字符或字符串函數

在C中&#xff0c;有多種方法可以替換字符串或字符。下面是一些常用的方法&#xff1a; 使用replace函數&#xff1a; replace函數可以替換字符串中的指定字符或子字符串。它的用法如下&#xff1a; string str "Hello World"; str.replace(str.find("World&qu…