【问题标题】:Can I get code from a private GitHub repository using a GET Request?我可以使用 GET 请求从私有 GitHub 存储库获取代码吗?
【发布时间】:2021-06-12 07:26:13
【问题描述】:

我正在建立一个网站,我想进行一些简单的身份验证。我知道这不是最安全的方法,但我想要一些快速简单的方法。此外,网站上没有需要极其安全的身份验证的敏感数据。

这是我要使用的方法:

我有一个 私人 GitHub 存储库,其中有一个 JSON 文件,其中包含此格式的人员凭据:

{
    "admin": {
        "username": "USERNAME_HERE",
        "password": "PASSWORD_HERE",
        "id": 7777
    }
}

当用户尝试登录时,请求是否可以从 JSON 文件中获取数据? 我尝试使用 raw.githubusercontent.com (原始代码),但由于 repo 是私有的,因此 URL 末尾需要一个访问令牌。访问令牌也会在一段时间后过期,需要一个新的。

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       console.log(xhttp.response);
       let a = JSON.parse(xhttp.response);
    }
};
xhttp.open("GET", "https://raw.githubusercontent.com/username/repo/master/json/data.json?token=MY_TOKEN", true);
xhttp.send();

这工作了一段时间,但随后令牌过期并且令牌在源代码中也可见,因此该方法无效。

如果我可以使用某种永久类型的令牌,我还需要在源代码中隐藏它。

如果我不能这样做,那么我有什么办法可以在线托管文件,并且是唯一可以访问它的人,也许是使用令牌?如果我能获得一些关于如何从源代码中隐藏令牌的想法,那就太好了。

【问题讨论】:

  • “如果我可以使用某种永久类型的令牌”:是的,它们被称为“个人访问令牌”,但它们会在您的代码中可见,因此它们绝对是禁止的否,如果您需要分发它。 “......有什么办法可以让我在线托管文件......”,不,不是真的。至少你需要给每个用户一个不同的访问令牌(如果你愿意,可以称之为 API 密钥)(这样你就不会在你的代码中分发它,你可以撤销它)。顺便说一句,这很可能是一个 XY 问题。

标签: javascript github request xmlhttprequest


【解决方案1】:

我知道这不是最安全的方法,但我想要一些快速简单的方法。

它既不安全,也不快速,也不简单。

当用户尝试登录时,是否可以通过请求从 JSON 文件中获取数据?

使用 Github API 读取文件(这将要求他们以有权读取您的存储库的用户身份对 Github 进行身份验证,这使得整个事情变得糟糕)。

如果我不能这样做,那么有什么方法可以让我在线托管文件,并且是唯一可以访问它的人,或许可以使用令牌?

任何类型的服务器端身份验证系统都可以做到这一点。

如果我能获得一些关于如何从源代码中隐藏令牌的想法,那就太好了。

这样做的唯一方法是让用户输入令牌(或使用密码管理器等)。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 2014-11-30
    • 2023-03-20
    • 2016-09-04
    • 2023-04-07
    • 2020-08-20
    • 2021-05-18
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多