2017-01-15 40 views
0

我在Azure服務器上運行燒瓶並使用POST將表單中的數據作爲python腳本的參數發送。在網頁中顯示python腳本輸出[服務器運行燒瓶]

下面是如何傳遞參數給腳本並運行它

os.system("python3 script.py " + postArgument) 

輸出通常顯示在日誌中,因爲它會在終端上。

如何將輸出回到新的網頁上?

+0

你爲什麼不能導入這個腳本並運行它?你不需要使用操作系統命令 –

回答

1

您可以使用管道,這是它是如何做

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有關命令注入

+0

你能解釋一下你說的「完整性檢查」嗎? –

+1

閱讀有關命令注入https://www.owasp.org/index。php/Command_Injection –

+0

@KalolParty我已經更新了有關完整性檢查的詳細答案。請接受答案,如果它有幫助 –