GitHubのプライベートリポジトリ内にアップロードされた画像に認証がかかるようになったので検証
2023/05/09よりプライベートリポジトリ内のIssues, Pull Requests, Discussions, Wiki等にアップロードした画像ファイルの閲覧に認証がかかるようになる。
以前はプライベートであっても発行されたURLを知っていれば誰でも閲覧できた。
プライベート
プライベートリポジトリを新規作成し、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>
このURLは失効するまでの間(5分間)は知ってさえいれば誰でも閲覧できる一方、URLパラメーターの認証情報を削ると403 Forbiddenで閲覧できない。
パブリック
パブリップリポジトリを新規作成し、Issuesのエディタ上で画像をアップロードすると以下のようにURLが発行される。
![](https://github.com/<ユーザー名>/<リポジトリ名>/assets/<ユーザーID>/<uuid>)
閲覧すると以下のリンクに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
に置き換えても閲覧できる。