簡體   English   中英

使用Golang安全執行命令(避免遠程執行)

[英]Safely execute command (avoid remote execution) with Golang

我有一個小的應用程序,它通過執行一個過程並為它提供用戶提供的查詢字符串中的一些輸入來處理http請求。 我想知道什么是針對遠程執行過濾輸入的最佳方法。 例如,PHP替代方案將類似於: http : //php.net/manual/en/function.escapeshellarg.php

現在,輸入應該是有效的URL(如果可以簡化的話),但理想情況下最好使用通用過濾器。

通常,像這樣的魔術函數很難正確使用,並且如果您嚴重依賴它們,它們通常會使應用程序容易受到攻擊。

我建議您使用智能的URL /請求方案來獲取運行所需的命令,並在用戶請求和Shell執行之間進行某種程度的解釋,以便不直接使用用戶給出的參數。

您可以獲取包含?verbose=true請求,然后在命令行上將其轉換為-v 在處理需要直接給正在運行的命令的字符串之類的用戶輸入時,您需要使用引號進行簡單的轉義(通過簡單的檢查以查看輸入是否包含引號),以確保您不會遇到“ Bobby”表”問題。

一種替代方法是讓您的程序和基礎命令通過管道或文件(例如)交換數據。 這將降低離開命令輸入開放攻擊向量的可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM