修改代码,使得action token具有与已登录用户等同的权限,对其他公开仓库有只读权限 #59

Merged
mengning merged 9 commits from fix/actions_token_read_public_repos into main 2026-01-09 03:25:07 +00:00
Owner

改动文件:
api.go - API 请求的仓库权限分配
routers/web/repo/githttp.go - Git clone/fetch 操作的权限检查
services/lfs/server.go - LFS 大文件下载的认证检查
services/actions/modify_workflow.go 将action token塞到短链接里面
改动逻辑:
开放action token的权限等同于已登录用户,但只有只读权限,短链接action再自动把token塞进去
改动前:
bc847e0bb4a8bf867f7bb66eb8a317d2.png
改动后:
371f2edf59fa055fc248950b2b88ce8e.png

改动文件: api.go - API 请求的仓库权限分配 routers/web/repo/githttp.go - Git clone/fetch 操作的权限检查 services/lfs/server.go - LFS 大文件下载的认证检查 services/actions/modify_workflow.go 将action token塞到短链接里面 改动逻辑: 开放action token的权限等同于已登录用户,但只有只读权限,短链接action再自动把token塞进去 改动前: <img width="917" alt="bc847e0bb4a8bf867f7bb66eb8a317d2.png" src="attachments/f30de26e-9a3a-462c-a482-0834124815ae"> 改动后: <img width="833" alt="371f2edf59fa055fc248950b2b88ce8e.png" src="attachments/b9119e12-afcb-48c0-868b-aed2bde07aad">
zzy added 1 commit 2026-01-06 14:35:23 +00:00
修改代码,使得action token具有与已登录用户等同的权限,对其他公开仓库有只读权限
All checks were successful
DevStar Studio CI/CD Pipeline / DevStarStudio-CICD-Pipeline (pull_request) Successful in 55m18s
eb81995bca

测试状态 通过 (Passed)

  • 列出有效的信息,尤其是失败的时候的错误信息

此评论由 DevStar Actions 自动生成,用于 PR 质量检查。

### 测试状态 ✅ 通过 (Passed) - 列出有效的信息,尤其是失败的时候的错误信息 --- > *此评论由 DevStar Actions 自动生成,用于 PR 质量检查。*
mengning reviewed 2026-01-07 00:48:46 +00:00
@@ -130,0 +133,4 @@
if strings.HasPrefix(baseURL, "http://") {
authURL = strings.Replace(baseURL, "http://", fmt.Sprintf("http://x-access-token:%s@", token), 1)
} else if strings.HasPrefix(baseURL, "https://") {
authURL = strings.Replace(baseURL, "https://", fmt.Sprintf("https://x-access-token:%s@", token), 1)
Owner

这种写法会在actions执行时暴露token吧?

{{ secrets.GITHUB_TOKEN }} 用它替代是不是更安全?

这种写法会在actions执行时暴露token吧? {{ secrets.GITHUB_TOKEN }} 用它替代是不是更安全?
Author
Owner

不会
Cloned http://x-access-token:***@172.24.161.175/actions/checkout to /root/.cache/act/f3146ca6e96b4234044f47c601b855d4df56f2d7bfdf59d7391b0e99db3e44a6
会变成这样,git有默认的脱敏处理

不会 Cloned http://x-access-token:***@172.24.161.175/actions/checkout to /root/.cache/act/f3146ca6e96b4234044f47c601b855d4df56f2d7bfdf59d7391b0e99db3e44a6 会变成这样,git有默认的脱敏处理
mengning marked this conversation as resolved
zzy force-pushed fix/actions_token_read_public_repos from eb81995bca to 53ff8f0112 2026-01-08 13:14:15 +00:00 Compare
Author
Owner

改动:
修改成转入secrets.GITHUB_TOKEN,使得runner自动替换

x-access-token实际上是作为用户名,这是一个约定俗成的特殊用户名,GitHub/Gitea 服务器看到这个用户名时,会知道密码字段传递的是一个 access token,而不是用户的真实密码。

其实大多数 Git 服务器(GitHub、Gitea)只验证密码字段的 token,用户名可以是任意值,用户名后面的token会默认脱敏

改动: 修改成转入secrets.GITHUB_TOKEN,使得runner自动替换 x-access-token实际上是作为用户名,这是一个约定俗成的特殊用户名,GitHub/Gitea 服务器看到这个用户名时,会知道密码字段传递的是一个 access token,而不是用户的真实密码。 其实大多数 Git 服务器(GitHub、Gitea)只验证密码字段的 token,用户名可以是任意值,用户名后面的token会默认脱敏

测试状态 失败 (Failed)

  • 列出有效的信息,尤其是失败的时候的错误信息

此评论由 DevStar Actions 自动生成,用于 PR 质量检查。

### 测试状态 ❌ 失败 (Failed) - 列出有效的信息,尤其是失败的时候的错误信息 --- > *此评论由 DevStar Actions 自动生成,用于 PR 质量检查。*
mengning added 8 commits 2026-01-09 03:24:18 +00:00
mengning merged commit ed37451d81 into main 2026-01-09 03:25:07 +00:00
mengning deleted branch fix/actions_token_read_public_repos 2026-01-09 03:25:08 +00:00

测试状态 失败 (Failed)

  • 列出有效的信息,尤其是失败的时候的错误信息

此评论由 DevStar Actions 自动生成,用于 PR 质量检查。

### 测试状态 ❌ 失败 (Failed) - 列出有效的信息,尤其是失败的时候的错误信息 --- > *此评论由 DevStar Actions 自动生成,用于 PR 质量检查。*
Sign in to join this conversation.
No description provided.