为了账号安全,请及时绑定邮箱和手机立即绑定

在 github 上公开后端是不好的做法吗?

在 github 上公开后端是不好的做法吗?

PHP
梦里花落0921 2023-04-15 14:27:41
这可能是一个愚蠢的问题,但我绝对是后端代码的初学者,我正在尝试专业地练习构建应用程序。将我的应用程序的整个代码库(不包括数据库密码、api 密钥和其他敏感数据位)推送到公共 github 存储库是否被认为是不好的做法?这是否会使我的应用程序在托管后处于易受攻击的位置?github repo 设置为 private 是否安全?github上前后端的专业处理方式是什么?我已经在网上搜索过,但“后端”和“github”只是显示“github 页面不支持服务器端代码”的结果。这很有趣,但完全是另一回事。
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

假设您的应用程序遵循最佳实践并且没有漏洞,这绝对是安全的,只要您不(意外地)包含您提到的任何凭据或机密。

如果您的应用程序确实存在漏洞,将其放在 GitHub 上实际上可能会降低危险。如果该漏洞存在于您正在使用的依赖项中,GitHub 可能会提醒您该漏洞,让您了解它并允许您修复它。此外,其他用户可能会发现缺陷、报告问题或 PR 并帮助您修复它。另一个额外的好处是,如果您自己的计算机受到威胁,您的代码将安全地存储在异地。

另一方面,有动机的攻击者可能想要利用该漏洞。为了做到这一点,他们仍然需要筛选您的代码以找到它,然后攻击您是使用您的软件的人。除非您的软件被高价值目标或大量目标使用,否则这对攻击者来说是不经济的。

github repo 设置为 private 是否安全?

差不多吧。私人回购的内容在ToS 的 E 节中进行了规定:

简短版本:您可以访问私有存储库。我们将私有存储库的内容视为机密,我们只会出于支持原因、在您同意的情况下或出于安全原因需要访问它。

我鼓励您阅读 ToS 的整个部分,如果您担心私人回购的机密性,它不是那么长但值得一读。

请注意,现在微软自己在 GitHub 上的一个私人仓库中托管了 Windows 源代码。许多其他公司也这样做。GitHub 在这方面赢得了值得信赖的声誉。

恕我直言,我会毫不犹豫地在 GitHub 上公开发布开源项目。但是,如果该项目是一个封闭源代码的盈利应用程序,那么问题就来了,为什么您首先要提供源代码。私人回购会更适合这一点。


查看完整回答
反对 回复 2023-04-15
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我不认为对此有一个简短的答案。

很大程度上取决于代码质量本身。如果您不使用准备好的语句访问数据库,那么可能想要攻击您的后端站点的人可能会找到一个简单的方法。如果您正确使用准备好的语句,他们可能甚至不会为 sql 注入攻击而烦恼。

但企业将其代码保密的主要原因是它被认为是敏感数据,就像密码和 api 密钥一样。竞争对手可以简单地复制您的代码(如果它位于公共存储库中),然后可能稍微修改一下布局,并在一周内使用您花了一年时间构建、改进和扩展的东西。

尽管如此,即使您将代码保密,您仍应将其视为公开的。这意味着您需要确保密码和 api 密钥之类的东西不会最终出现在存储库中。

还要记住,提交后很难从 git 存储库中删除文件。如果一个文件在提交 123456 中提交,然后在提交 abcdef 中删除,它仍然存在于提交历史中。


查看完整回答
反对 回复 2023-04-15
?
萧十郎

TA贡献1815条经验 获得超12个赞

假设您使用的是 php,但这也适用于其他语言。


当我构建时,我将所有 db/connect 凭据都放在一个文件中,并将每个凭据设置为一个变量,例如 $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,只需创建一个文件并将其命名为 .gitignore 并将 credential.php 放入


查看完整回答
反对 回复 2023-04-15
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信