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

2023/05/09よりプライベートリポジトリ内のIssues, Pull Requests, Discussions, Wiki等にアップロードした画像ファイルの閲覧に認証がかかるようになる。
以前はプライベートであっても発行されたURLを知っていれば誰でも閲覧できた。

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

別のブラウザやシークレットウィンドウ等で閲覧しようとすると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>
このURLは失効するまでの間(5分間)は知ってさえいれば誰でも閲覧できる一方、URLパラメーターの認証情報を削ると403 Forbiddenで閲覧できない。

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

閲覧すると以下のリンクに302リダイレクトされる。
https://github-production-user-asset-6210df.s3.amazonaws.com/<ユーザーID>/<uuid>.png
このURLは知ってさえいれば誰でも閲覧できる。プライベートの時と違いURLパラメーターに認証情報はない。

パブリック -> プライベート
リポジトリの状態がパブリックの時にアップロードしたファイルについて、
-
https://github.com/<ユーザー名>/<リポジトリ名>/assets/…
の画像は認証がないと閲覧できなくなる。 - リダイレクト先の
https://github-production-user-asset-6210df.s3.amazonaws.com/…
の画像は継続してURLパラメーターの認証情報なしで閲覧できる。

プライベート -> パブリック
リポジトリの状態がプライベートの時にアップロードしたファイルについて、
-
https://github.com/<ユーザー名>/<リポジトリ名>/assets/…
の画像は認証があっても閲覧できなくなる。 - リダイレクト先の
https://github-production-user-asset-6210df.s3.amazonaws.com/…
の画像はURLパラメーターの認証情報があれば失効するまでの間は閲覧できる。

旧URL
以前は一律にhttps://user-images.githubusercontent.com/<ユーザーID>/<uuid>.png
にアップロードされていた。
現在も、リダイレクト先のURLのgithub-production-user-asset-6210df.s3.amazonaws.com
をuser-images.githubusercontent.com
に置き換えても閲覧できる。