mirror of
https://github.com/Athou/commafeed.git
synced 2026-10-28 16:09:16 +00:00
prevent Host header injection attacks
This commit is contained in:
@@ -41,6 +41,11 @@ public class CommaFeedApplication {
|
||||
ImageProxyUrl.generateKey();
|
||||
}
|
||||
|
||||
if (config.passwordRecoveryEnabled() && config.passwordRecoveryPublicBaseUrl().isEmpty()) {
|
||||
throw new IllegalStateException(
|
||||
"password recovery is enabled but no public base url is set");
|
||||
}
|
||||
|
||||
feedRefreshEngine.start();
|
||||
taskScheduler.start();
|
||||
}
|
||||
|
||||
@@ -49,6 +49,13 @@ public interface CommaFeedConfiguration {
|
||||
@WithDefault("false")
|
||||
boolean passwordRecoveryEnabled();
|
||||
|
||||
/**
|
||||
* The base URL of the application to use in the password recovery link in the email. We can't
|
||||
* use the URL sent by the browser of the user because of malicious Host header injection
|
||||
* attacks.
|
||||
*/
|
||||
Optional<String> passwordRecoveryPublicBaseUrl();
|
||||
|
||||
/** Message displayed in a notification at the bottom of the page. */
|
||||
Optional<String> announcement();
|
||||
|
||||
|
||||
@@ -413,7 +413,8 @@ public class UserREST {
|
||||
}
|
||||
|
||||
private String buildEmailContent(User user) throws URISyntaxException {
|
||||
String publicUrl = Urls.removeTrailingSlash(uri.getBaseUri().toString());
|
||||
String publicUrl =
|
||||
Urls.removeTrailingSlash(config.passwordRecoveryPublicBaseUrl().orElseThrow());
|
||||
return String.format(
|
||||
"You asked for password recovery for account '%s', <a href='%s'>follow this link</a> to change your password. Ignore this if you didn't request a password recovery.",
|
||||
user.getName(), callbackUrl(user, publicUrl));
|
||||
|
||||
Reference in New Issue
Block a user