Closed6

GitHubのプライベートリポジトリ内にアップロードされた画像に認証がかかるようになったので検証

3w36zj63w36zj6

プライベート

プライベートリポジトリを新規作成し、Issuesのエディタ上で画像をアップロードすると以下のようにURLが発行される。

![](https://github.com/<ユーザー名>/<リポジトリ名>/assets/<ユーザーID>/<uuid>)

別のブラウザやシークレットウィンドウ等で閲覧しようとすると404 Not Foundが返ってくることが確認できる。

また認証の通っているクライアントで閲覧すると以下のリンクに302リダイレクトされる。(Amazon S3の署名付きURL?)uuidの部分はリダイレクト元とは異なる。

https://github-production-user-asset-6210df.s3.amazonaws.com/<ユーザーID>/<uuid>.png
  ?X-Amz-Algorithm=AWS4-HMAC-SHA256
  &X-Amz-Credential=XXXXXXXXXXXXXXXXXXXX%2F20230510%2Fus-east-1%2Fs3%2Faws4_request
  &X-Amz-Date=20230510T114026Z
  &X-Amz-Expires=300
  &X-Amz-Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  &X-Amz-SignedHeaders=host
  &actor_id=<ユーザーID>
  &key_id=0
  &repo_id=<リポジトリID>

https://dev.classmethod.jp/articles/amazon-s3-console-pre-signed-url-generate/

このURLは失効するまでの間(5分間)は知ってさえいれば誰でも閲覧できる一方、URLパラメーターの認証情報を削ると403 Forbiddenで閲覧できない。

3w36zj63w36zj6

パブリック

パブリップリポジトリを新規作成し、Issuesのエディタ上で画像をアップロードすると以下のようにURLが発行される。

![](https://github.com/<ユーザー名>/<リポジトリ名>/assets/<ユーザーID>/<uuid>)

閲覧すると以下のリンクに302リダイレクトされる。

https://github-production-user-asset-6210df.s3.amazonaws.com/<ユーザーID>/<uuid>.png

このURLは知ってさえいれば誰でも閲覧できる。プライベートの時と違いURLパラメーターに認証情報はない。

3w36zj63w36zj6

パブリック -> プライベート

リポジトリの状態がパブリックの時にアップロードしたファイルについて、

  • https://github.com/<ユーザー名>/<リポジトリ名>/assets/…の画像は認証がないと閲覧できなくなる。
  • リダイレクト先のhttps://github-production-user-asset-6210df.s3.amazonaws.com/…の画像は継続してURLパラメーターの認証情報なしで閲覧できる。
3w36zj63w36zj6

プライベート -> パブリック

リポジトリの状態がプライベートの時にアップロードしたファイルについて、

  • https://github.com/<ユーザー名>/<リポジトリ名>/assets/…の画像は認証があっても閲覧できなくなる。
  • リダイレクト先のhttps://github-production-user-asset-6210df.s3.amazonaws.com/…の画像はURLパラメーターの認証情報があれば失効するまでの間は閲覧できる。
3w36zj63w36zj6

旧URL

以前は一律にhttps://user-images.githubusercontent.com/<ユーザーID>/<uuid>.pngにアップロードされていた。

現在も、リダイレクト先のURLのgithub-production-user-asset-6210df.s3.amazonaws.comuser-images.githubusercontent.comに置き換えても閲覧できる。

このスクラップは2023/05/10にクローズされました