2009-10-28 106 views
8

我一直想讓我們的一些公司產品開源..但是我們的源代碼中有很多東西會讓我們變得難以忍受。這在大多數開源項目中如何處理?例如,我們使用一些自定義Web服務來對我們的數據庫執行操作(添加帳戶,刪除帳戶等)。源代碼必須包含我們用來使用Web服務的密鑰(密碼)。如果有人想要,他們可以抓住源頭,拿到鑰匙來使用我們的網絡服務,並破壞我們的數據庫。開放源代碼及其如何爲安全項目工作?

這些只是不應該是開源的項目嗎?或者將敏感內容放在文件或其他東西中而不包含該部分通常很常見? (雖然這樣做會使源代碼對公衆無用,因爲它會失去它的功能)。

開放源代碼項目上的任何鏈接或資源以及如何處理這些東西都會很好。

感謝

+1

爲什麼要開源產品?如果你這樣做,因爲你認爲你會得到很多免費開發,那不是它的工作方式。人們只會在他們使用的項目上工作,他們只會使用提供他們價值的項目。 – kdgregory 2009-10-28 17:55:33

+0

另請參見:[開源項目如何處理安全構件?](http://security.stackexchange.com/q/12295/12139) – unor 2013-09-19 08:29:42

回答

8

密碼和敏感數據最好不包括在源文件中。如果你看看像PHPMyAdmin這樣的開源軟件的設計,提供一個配置文件來添加這些信息,並且通常存儲在虛擬主機的根文件夾(或www文件夾以外的任何地方)中。

所以這個想法是,如果您的網站使用一些信息鏈接到服務,您應該將它們隱藏在一個文件中,並要求您的用戶提供密碼並創建自己的帳戶。

3

這豈不是可以把你的敏感數據到一個配置文件?這也將允許其他用戶輕鬆添加自己的敏感信息等。

+0

配置文件可能不適用於所有情況。通常我們將使用數據庫/ xml文件來存儲設置。 – Raptor 2009-10-28 09:21:25

2

您不應該將敏感數據包含到公共中,因此一種選擇可能是爲服務製作公共API,然後用戶需要創建一個帳戶來獲取數據的API密鑰。

我不認爲這應該阻止你從開源的產品,但我認爲你需要重新思考數據的方式通過公共API。

1

儘管程序代碼是開源的,但您的敏感數據卻不是。永遠不要「提供」你的數據給他人。

通常,單向哈希驗證已經可以用作基本加密。 如果需要額外的安全性,請使用額外的措施,如公開的&私鑰&預共享密碼。

2

如果您在代碼中對數據庫密碼進行硬編碼,那麼您就錯了。正如其他人指出的那樣,您應該將其存儲在單獨的受保護的配置文件中。

如果您分發代碼,無論是源代碼還是二進制代碼,那麼密碼就在那裏,任何人都可以恢復。二進制文件中的硬編碼密碼通常是黑客恢復的一件微不足道的事情。