2010-10-29 105 views
0

我有一個計劃,開發一個公共訪問接口,將允許用戶將git存儲庫推送到服務器,並讓服務器編譯存儲庫中的乳膠源並返回生成的文件。我想知道的是我可能需要注意的安全問題?乳膠安全考慮

該計劃迄今:

  • 使用一個單獨的低權限的用戶帳戶來編譯LaTeX的。
  • 由於每個項目都位於其自己的存儲庫中,編譯將在其自己的子目錄中發生,建議爲here

回答

2

你服用的用戶數據計劃,而爲了生成文檔運行它通過乳膠。這是使用非轉義用戶數據作爲可執行代碼的安全問題的另一個方面。這是任何建立在圖靈架構之上的問題 - 數據和指令是可以互換的。沒有這個,我們的機器就不那麼強大。

那麼,用戶需要做什麼才能妥協你的系統呢?他們需要找出一種方法來控制LaTeX的投入。然後,他們需要一種方法將特權從LaTeX用戶升級到他們需要實現其目標所需的任何用戶級別。

攻擊者的目標是什麼?爲什麼我想專門針對你的系統,而不是更容易,更低的掛果?您是否打算在您的網站上做其他事情,例如處理信用卡付款,託管機密文件或冒犯某些宗教/民族/文化少數羣體?如果我是你,我會採取你提到的預防措施(低級用戶帳戶),並花15分鐘時間考慮在LaTeX環境下轉義用戶數據是否合理,然後繼續。沒有人會花時間和資源支持你,除非它是純粹的學術活動。有很多事情會以更高的回報輕鬆得多。

去吧。如果您成功了,那麼您可以重新設計您的系統,以滿足您在第一次構建時學到的所有需求。如果你不成功,而且你沒有任何用戶,金錢或其他任何成功標準,那麼你會很高興你爲過度設計問題節省了太多時間。

巴特勒·蘭普森說:Plan to throw one away; you will anyhow. If there is anything new about the function of a system, the first implementation will have to be redone completely to achieve a satisfactory (that is, acceptably small, fast, and maintainable) result.

唯一除了這個,我想說的是體積小,速度快,維護和安全

布賴恩J. Stinar

1

你必須採取\ write18考慮,因爲它可以執行系統腳本!

+0

我不太瞭解乳膠,但是如何防範呢?簡單地解析輸入並禁止包含這些內容的任何內容就足夠了,或者可以使用其他LaTeX操作任意構建這樣的字符串? – 2010-10-29 17:38:20

+0

您需要禁用\ write18運行。谷歌應該幫助! – Mica 2010-11-10 18:24:39