3 回答

TA貢獻1765條經(jīng)驗 獲得超5個贊
假設您的應用程序遵循最佳實踐并且沒有漏洞,這絕對是安全的,只要您不(意外地)包含您提到的任何憑據(jù)或機密。
如果您的應用程序確實存在漏洞,將其放在 GitHub 上實際上可能會降低危險。如果該漏洞存在于您正在使用的依賴項中,GitHub 可能會提醒您該漏洞,讓您了解它并允許您修復它。此外,其他用戶可能會發(fā)現(xiàn)缺陷、報告問題或 PR 并幫助您修復它。另一個額外的好處是,如果您自己的計算機受到威脅,您的代碼將安全地存儲在異地。
另一方面,有動機的攻擊者可能想要利用該漏洞。為了做到這一點,他們?nèi)匀恍枰Y選您的代碼以找到它,然后攻擊您是使用您的軟件的人。除非您的軟件被高價值目標或大量目標使用,否則這對攻擊者來說是不經(jīng)濟的。
github repo 設置為 private 是否安全?
差不多吧。私人回購的內(nèi)容在ToS 的 E 節(jié)中進行了規(guī)定:
簡短版本:您可以訪問私有存儲庫。我們將私有存儲庫的內(nèi)容視為機密,我們只會出于支持原因、在您同意的情況下或出于安全原因需要訪問它。
我鼓勵您閱讀 ToS 的整個部分,如果您擔心私人回購的機密性,它不是那么長但值得一讀。
請注意,現(xiàn)在微軟自己在 GitHub 上的一個私人倉庫中托管了 Windows 源代碼。許多其他公司也這樣做。GitHub 在這方面贏得了值得信賴的聲譽。
恕我直言,我會毫不猶豫地在 GitHub 上公開發(fā)布開源項目。但是,如果該項目是一個封閉源代碼的盈利應用程序,那么問題就來了,為什么您首先要提供源代碼。私人回購會更適合這一點。

TA貢獻1828條經(jīng)驗 獲得超13個贊
我不認為對此有一個簡短的答案。
很大程度上取決于代碼質量本身。如果您不使用準備好的語句訪問數(shù)據(jù)庫,那么可能想要攻擊您的后端站點的人可能會找到一個簡單的方法。如果您正確使用準備好的語句,他們可能甚至不會為 sql 注入攻擊而煩惱。
但企業(yè)將其代碼保密的主要原因是它被認為是敏感數(shù)據(jù),就像密碼和 api 密鑰一樣。競爭對手可以簡單地復制您的代碼(如果它位于公共存儲庫中),然后可能稍微修改一下布局,并在一周內(nèi)使用您花了一年時間構建、改進和擴展的東西。
盡管如此,即使您將代碼保密,您仍應將其視為公開的。這意味著您需要確保密碼和 api 密鑰之類的東西不會最終出現(xiàn)在存儲庫中。
還要記住,提交后很難從 git 存儲庫中刪除文件。如果一個文件在提交 123456 中提交,然后在提交 abcdef 中刪除,它仍然存在于提交歷史中。

TA貢獻1815條經(jīng)驗 獲得超13個贊
假設您使用的是 php,但這也適用于其他語言。
當我構建時,我將所有 db/connect 憑據(jù)都放在一個文件中,并將每個憑據(jù)設置為一個變量,例如 $username、$password 等。然后使用 include 語句將這些變量引入連接文件。然后,如果您擔心其他人看到它,請將該憑證文件放入您的 .gitignore 中。
確保 include 語句在 connection 語句之前。
例如
//credential.php
$username = 'usernameExample'
$password = 'passwordExample'
//then in your connect file
//connect.php
include 'credential.php'
//put a try block here
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
/put a catch block here
對于 gitignore,只需創(chuàng)建一個文件并將其命名為 .gitignore 并將 credential.php 放入
- 3 回答
- 0 關注
- 207 瀏覽
添加回答
舉報