我們有一個面向內部和外部的asp.net mvc應用程序,在ubuntu 10.04 LTS下運行在單聲道下。用戶在同一臺服務器上使用的還有一個複雜的(本地,非單聲道)命令行應用程序。他們通過ssh登錄來執行此操作。我們對ssh用戶的安全性非常關注,所以除了運行命令行應用程序外,他們無法完成其他任務。安全運行在asp.net mvc應用程序下的單聲道命令行應用程序
這些應用程序的用戶有:
- 通過ssh登錄到服務器,運行與任何命令行參數的要求,然後做一些長期運行的處理,並把在報表中的命令行應用程序數據庫的Web應用程序。
- 登錄到Web應用程序,然後設置一些選項以通過Web應用程序發佈報告。
應用程序的用戶想要跳過第1步並在網絡應用程序中執行所有操作。我正在考慮創建一個定期輪詢數據庫以便運行命令行應用程序作業的服務。作業將由用戶根據需要在網絡應用程序中創建。
問題是,用戶需要一個在web應用程序中的框,他們可以在其中填寫任何命令行選項。但我不希望他們做這樣的事情:
-a dothis -b dothis & rm importantfile.txt
...的情況下,用戶的憑據到Web應用程序在某種程度上受到影響。我想確保只有該命令行應用程序可以使用,而不是其他任何東西。我正在考慮阻止字符! | < > &/\ $ ()
被允許,這看起來像命令行應用程序不需要。
這夠好嗎?有什麼其他的shell技巧我應該知道嗎?我應該採取不同的方法嗎?
我真的不想爲用戶提供的參數編寫某種解析器,因爲有大量的用戶喜歡使用它們。
噢。我現在覺得有點愚蠢:)我可以肯定地啓動它作爲一個過程。我不敢相信我之前沒有想到...... – simon