我在Azure服務器上運行燒瓶並使用POST將表單中的數據作爲python腳本的參數發送。在網頁中顯示python腳本輸出[服務器運行燒瓶]
下面是如何傳遞參數給腳本並運行它
os.system("python3 script.py " + postArgument)
輸出通常顯示在日誌中,因爲它會在終端上。
如何將輸出回到新的網頁上?
我在Azure服務器上運行燒瓶並使用POST將表單中的數據作爲python腳本的參數發送。在網頁中顯示python腳本輸出[服務器運行燒瓶]
下面是如何傳遞參數給腳本並運行它
os.system("python3 script.py " + postArgument)
輸出通常顯示在日誌中,因爲它會在終端上。
如何將輸出回到新的網頁上?
您可以使用管道,這是它是如何做
os.popen("python3 script.py " + postArgument).read()
從安全的角度來看,我會建議你做的postArguements
一些理智檢查使用
編輯之前:回答評論問爲什麼健全性檢查
該代碼難以忍受指令注入
命令注入是一種攻擊,其目標是通過易受攻擊的 應用程序在主機操作系統上執行 任意命令。當一個 應用程序將不安全的用戶提供的數據(表單,cookie,HTTP 頭等)傳遞給系統shell時,命令注入攻擊是可能的。在這次攻擊中,攻擊者提供的 操作系統命令通常以 的特權執行。由於輸入驗證不足,命令注入攻擊可能是 。
讓我儘量表現出不可能性攻擊你的情況 如果
postArgument = "blah ; rm -rf /"
然後
os.popen("python3 script.py " + postArgument).read()
將equalent到
os.popen("python3 script.py blah ; rm -rf /").read()
這將嘗試刪除系統中的所有文件。
如何避免這種 要麼使用pipes.Quote
import pipes
p = os.popen("python3 script.py " + pipes.quote(postArgument)).read()
或使用subprocess
,這是因爲os.popen
recomended是depricated
import subprocess
p = subprocess.Popen(["python3", "script.py", postArguemnt])
讀here有關命令注入
你能解釋一下你說的「完整性檢查」嗎? –
閱讀有關命令注入https://www.owasp.org/index。php/Command_Injection –
@KalolParty我已經更新了有關完整性檢查的詳細答案。請接受答案,如果它有幫助 –
你爲什麼不能導入這個腳本並運行它?你不需要使用操作系統命令 –