From bfb61bb46cfffbedf9e57e597fc9b903d6915f19 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Mon, 27 Jan 2014 13:47:45 +0100 Subject: [PATCH] Added 'isEmail' parameter for generated links --- .../lib/system/request/LinkHandler.class.php | 7 +++++ .../plugin/LinkBlockTemplatePlugin.class.php | 4 +++ wcfsetup/install/lang/de.xml | 26 +++++++++---------- wcfsetup/install/lang/en.xml | 26 +++++++++---------- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/wcfsetup/install/files/lib/system/request/LinkHandler.class.php b/wcfsetup/install/files/lib/system/request/LinkHandler.class.php index a17efca749..c942d03962 100644 --- a/wcfsetup/install/files/lib/system/request/LinkHandler.class.php +++ b/wcfsetup/install/files/lib/system/request/LinkHandler.class.php @@ -68,6 +68,13 @@ class LinkHandler extends SingletonFactory { $isACP = $originIsACP = RequestHandler::getInstance()->isACPRequest(); $encodeTitle = $forceWCF = $isRaw = false; $appendSession = true; + + // enforce a certain level of sanitation and protection for links embedded in emails + if (isset($parameters['isEmail']) && (bool)$parameters['isEmail']) { + $parameters['forceFrontend'] = true; + $parameters['appendSession'] = false; + } + if (isset($parameters['application'])) { $abbreviation = $parameters['application']; } diff --git a/wcfsetup/install/files/lib/system/template/plugin/LinkBlockTemplatePlugin.class.php b/wcfsetup/install/files/lib/system/template/plugin/LinkBlockTemplatePlugin.class.php index 980a9bcfb8..43c82bc22b 100644 --- a/wcfsetup/install/files/lib/system/template/plugin/LinkBlockTemplatePlugin.class.php +++ b/wcfsetup/install/files/lib/system/template/plugin/LinkBlockTemplatePlugin.class.php @@ -36,6 +36,10 @@ class LinkBlockTemplatePlugin implements IBlockTemplatePlugin { $tagArgs['application'] = 'wcf'; } + if (isset($tagArgs['isEmail']) && $tagArgs['isEmail']) { + $tagArgs['encode'] = true; + } + if (isset($tagArgs['encode']) && !$tagArgs['encode']) { unset($tagArgs['encode']); return LinkHandler::getInstance()->getLink($tagArgs['controller'], $tagArgs, $blockContent); diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index 09514b07ef..735189190d 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -2081,7 +2081,7 @@ Fehler sind beispielsweise: @@ -2096,7 +2096,7 @@ Ihr neues Kennwort für die Website "{@PAGE_TITLE|language}" lautet: Sie können Ihr Kennwort unter folgender Adresse jederzeit ändern: -{link controller='AccountManagement' encode=false isACP=false}{/link} ]]> +{link controller='AccountManagement' isEmail=true}{/link} ]]> @@ -2132,11 +2132,11 @@ Sie können Ihr Kennwort unter folgender Adresse jederzeit ändern: Sie haben Ihre E-Mail-Adresse auf der Website: {@PAGE_TITLE|language} geändert. Zum Abschließen dieser Änderung müssen Sie einmalig die Gültigkeit Ihrer neuen E-Mail-Adresse bestätigen. Bitte bestätigen Sie die Gültigkeit Ihrer neuen E-Mail-Adresse, indem Sie folgenden Link aufrufen: -{link controller='EmailActivation' encode=false}u={@$userID}&a={@$activationCode}{/link} +{link controller='EmailActivation' isEmail=true}u={@$userID}&a={@$activationCode}{/link} **** Funktioniert der Link oben nicht? **** Wenn der Link nicht funktioniert, sollten Sie folgende Adresse in Ihrem Browser aufrufen: -{link controller='EmailActivation' encode=false}{/link} +{link controller='EmailActivation' isEmail=true}{/link} Bitte achten Sie darauf, dass keine Leerzeichen in der Adresse sind. Wenn Sie den Link aufgerufen haben, müssen Sie auf der erscheinenden Seite Ihre Benutzernummer sowie den Aktivierungscode eingeben. @@ -2226,7 +2226,7 @@ auf der Website {@PAGE_TITLE|language} erfolgte eine neue Benutzeranmeldung durc Die E-Mail-Adresse des neuen Benutzers lautet: {@$user->email} Sie erreichen das Benutzerprofil des neuen Benutzers, indem Sie folgenden Link aufrufen: -{link controller='User' object=$user encode=false}{/link} ]]> +{link controller='User' object=$user isEmail=true}{/link} ]]> username}. Ihre Registrierung ist hiermit vollständig abgeschlossen.]]> @@ -2236,7 +2236,7 @@ vielen Dank für Ihre Registrierung auf der Website: {@PAGE_TITLE|language}. Bevor wir Ihre Registrierung aktivieren können, müssen Sie einmalig die Gültigkeit Ihrer E-Mail-Adresse bestätigen. Bitte bestätigen Sie die Gültigkeit Ihrer E-Mail-Adresse, indem Sie folgenden Link aufrufen: -{link controller='RegisterActivation' encode=false}{/link} +{link controller='RegisterActivation' isEmail=true}{/link} Wenn Sie den Link aufgerufen haben, müssen Sie auf der erscheinenden Seite Ihren Benutzernamen sowie den Aktivierungscode eingeben. @@ -2384,20 +2384,20 @@ Sollten Sie sich nicht auf der Website: {@PAGE_TITLE|language} angemeldet haben, eventID}&userID={@$user->userID}&token={@$token}{/link}]]> +{link controller='NotificationDisable' isEmail=true}eventID={@$notification->eventID}&userID={@$user->userID}&token={@$token}{/link}]]> username},]]> userID}&token={@$token}{/link}]]> +{link controller='NotificationDisable' isEmail=true}userID={@$user->userID}&token={@$token}{/link}]]> @@ -2417,7 +2417,7 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn --------------------------------- {@$comment->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}{/link}#wall]]> +{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]> username} verfasst.]]> username} hat eine Antwort zu Ihrem Kommentar an der Pinnwand von "{@$owner->username}" verfasst: @@ -2425,7 +2425,7 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn --------------------------------- {@$response->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}{/link}#wall]]> +{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]> username} an Ihrer Pinnwand verfasst.]]> username} hat eine Antwort zum Kommentar von "{@$commentAuthor->username}" an Ihrer Pinnwand verfasst: @@ -2433,7 +2433,7 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn --------------------------------- {@$response->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}{/link}#wall]]> +{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]> diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index 8338123b6f..8d9295cb2d 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -2080,7 +2080,7 @@ Errors are: @@ -2095,7 +2095,7 @@ your new password for "{@PAGE_TITLE|language}" is: You can change your password any time at: -{link controller='AccountManagement' encode=false isACP=false}{/link} ]]> +{link controller='AccountManagement' isEmail=true}{/link} ]]> @@ -2129,11 +2129,11 @@ You can change your password any time at: you’ve changed your email address on: {@PAGE_TITLE|language}. It is required to open the link below in order to verify this email address. -{link controller='EmailActivation' encode=false}u={@$userID}&a={@$activationCode}{/link} +{link controller='EmailActivation' isEmail=true}u={@$userID}&a={@$activationCode}{/link} **** Unable to click or open the link above? **** Please open the link below in your browser: -{link controller='EmailActivation' encode=false}{/link} +{link controller='EmailActivation' isEmail=true}{/link} Once prompted please provide the following details: @@ -2223,7 +2223,7 @@ someone registered with your website {@PAGE_TITLE|language}: {@$user->username} Email address used: {@$user->email} Open the link below to access the user profile: -{link controller='User' object=$user encode=false}{/link} ]]> +{link controller='User' object=$user isEmail=true}{/link} ]]> username}.
@@ -2234,7 +2234,7 @@ thank you for registering on our website: {@PAGE_TITLE|language}. Please validate your email address to complete your registration. Open the link below: -{link controller='RegisterActivation' encode=false}{/link} +{link controller='RegisterActivation' isEmail=true}{/link} Once prompted provide the details as shown below: @@ -2382,20 +2382,20 @@ You can safely ignore this email if you did not register with the website: {@PAG eventID}&userID={@$user->userID}&token={@$token}{/link}]]> +{link controller='NotificationDisable' isEmail=true}eventID={@$notification->eventID}&userID={@$user->userID}&token={@$token}{/link}]]>
username},]]> userID}&token={@$token}{/link}]]> +{link controller='NotificationDisable' isEmail=true}userID={@$user->userID}&token={@$token}{/link}]]> @@ -2415,7 +2415,7 @@ If you do not want to receive further email notifications for this event, you ca --------------------------------- {@$comment->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}#wall{/link}]]> +{/if}{link controller='User' object=$owner isEmail=true}#wall{/link}]]> username}’s wall.]]> username} wrote a reply to your comment on {@$owner->username}’s wall: @@ -2423,7 +2423,7 @@ If you do not want to receive further email notifications for this event, you ca --------------------------------- {@$response->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}{/link}#wall]]> +{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]> username}’s comment on your wall.]]> username} wrote a reply to {@$commentAuthor->username}’s comment on your wall: @@ -2431,7 +2431,7 @@ If you do not want to receive further email notifications for this event, you ca --------------------------------- {@$response->message} --------------------------------- -{/if}{link controller='User' object=$owner encode=false forceFrontend=true}{/link}#wall]]> +{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]> -- 2.20.1