mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 19:32:24 -05:00 
			
		
		
		
	[bugfix] CSP policy fixes for S3/object storage (#2104)
* [bugfix] CSP policy fixes for S3 in non-proxied mode * It should be img-src * In both img-src and media-src we still need to include 'self'
This commit is contained in:
		
					parent
					
						
							
								b7274545e0
							
						
					
				
			
			
				commit
				
					
						5e368d3089
					
				
			
		
					 2 changed files with 10 additions and 6 deletions
				
			
		|  | @ -83,11 +83,15 @@ func BuildContentSecurityPolicy() string { | ||||||
| 	// Construct endpoint URL. | 	// Construct endpoint URL. | ||||||
| 	s3EndpointURLStr := scheme + "://" + s3Endpoint | 	s3EndpointURLStr := scheme + "://" + s3Endpoint | ||||||
| 
 | 
 | ||||||
|  | 	// When object storage is in use in non-proxied mode, GtS still serves some | ||||||
|  | 	// assets itself like the logo, so keep 'self' in there. That should also | ||||||
|  | 	// handle any redirects from the fileserver to object storage. | ||||||
|  | 
 | ||||||
| 	// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src | 	// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src | ||||||
| 	policy += "; image-src " + s3EndpointURLStr | 	policy += "; img-src 'self' " + s3EndpointURLStr | ||||||
| 
 | 
 | ||||||
| 	// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src | 	// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src | ||||||
| 	policy += "; media-src " + s3EndpointURLStr | 	policy += "; media-src 'self' " + s3EndpointURLStr | ||||||
| 
 | 
 | ||||||
| 	return policy | 	return policy | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -44,25 +44,25 @@ func TestBuildContentSecurityPolicy(t *testing.T) { | ||||||
| 			s3Endpoint: "some-bucket-provider.com", | 			s3Endpoint: "some-bucket-provider.com", | ||||||
| 			s3Proxy:    false, | 			s3Proxy:    false, | ||||||
| 			s3Secure:   true, | 			s3Secure:   true, | ||||||
| 			expected:   "default-src 'self'; image-src https://some-bucket-provider.com; media-src https://some-bucket-provider.com", | 			expected:   "default-src 'self'; img-src 'self' https://some-bucket-provider.com; media-src 'self' https://some-bucket-provider.com", | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			s3Endpoint: "some-bucket-provider.com:6969", | 			s3Endpoint: "some-bucket-provider.com:6969", | ||||||
| 			s3Proxy:    false, | 			s3Proxy:    false, | ||||||
| 			s3Secure:   true, | 			s3Secure:   true, | ||||||
| 			expected:   "default-src 'self'; image-src https://some-bucket-provider.com:6969; media-src https://some-bucket-provider.com:6969", | 			expected:   "default-src 'self'; img-src 'self' https://some-bucket-provider.com:6969; media-src 'self' https://some-bucket-provider.com:6969", | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			s3Endpoint: "some-bucket-provider.com:6969", | 			s3Endpoint: "some-bucket-provider.com:6969", | ||||||
| 			s3Proxy:    false, | 			s3Proxy:    false, | ||||||
| 			s3Secure:   false, | 			s3Secure:   false, | ||||||
| 			expected:   "default-src 'self'; image-src http://some-bucket-provider.com:6969; media-src http://some-bucket-provider.com:6969", | 			expected:   "default-src 'self'; img-src 'self' http://some-bucket-provider.com:6969; media-src 'self' http://some-bucket-provider.com:6969", | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			s3Endpoint: "s3.nl-ams.scw.cloud", | 			s3Endpoint: "s3.nl-ams.scw.cloud", | ||||||
| 			s3Proxy:    false, | 			s3Proxy:    false, | ||||||
| 			s3Secure:   true, | 			s3Secure:   true, | ||||||
| 			expected:   "default-src 'self'; image-src https://s3.nl-ams.scw.cloud; media-src https://s3.nl-ams.scw.cloud", | 			expected:   "default-src 'self'; img-src 'self' https://s3.nl-ams.scw.cloud; media-src 'self' https://s3.nl-ams.scw.cloud", | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			s3Endpoint: "some-bucket-provider.com", | 			s3Endpoint: "some-bucket-provider.com", | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue