From a6e379b48c008aa1718120a4e34b4d8975a5e43c Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 2 Oct 2013 20:03:03 +0200 Subject: [PATCH] Added prototype of CSRF protection for forms --- com.woltlab.wcf/templates/avatarEdit.tpl | 3 +++ .../templates/formErrorSecurityToken.tpl | 5 +++++ .../files/lib/form/AbstractSecureForm.class.php | 13 ++++++------- .../install/files/lib/form/AvatarEditForm.class.php | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 com.woltlab.wcf/templates/formErrorSecurityToken.tpl diff --git a/com.woltlab.wcf/templates/avatarEdit.tpl b/com.woltlab.wcf/templates/avatarEdit.tpl index b5a3d7c431..74979e3f82 100644 --- a/com.woltlab.wcf/templates/avatarEdit.tpl +++ b/com.woltlab.wcf/templates/avatarEdit.tpl @@ -18,6 +18,8 @@ {include file='userNotice'} +{include file='formErrorSecurityToken'} + {if $__wcf->user->disableAvatar}

{lang}wcf.user.avatar.error.disabled{/lang}

{/if} @@ -108,6 +110,7 @@ {if !$__wcf->user->disableAvatar}
+ {@SECURITY_TOKEN_INPUT_TAG}
{/if} diff --git a/com.woltlab.wcf/templates/formErrorSecurityToken.tpl b/com.woltlab.wcf/templates/formErrorSecurityToken.tpl new file mode 100644 index 0000000000..68ae1d84f8 --- /dev/null +++ b/com.woltlab.wcf/templates/formErrorSecurityToken.tpl @@ -0,0 +1,5 @@ +{if $errorField} + {if ($errorField|is_array && $errorField[__securityToken]|isset) || $errorField == '__securityToken'} +

{lang}wcf.global.form.error.securityToken{/lang}

+ {/if} +{/if} \ No newline at end of file diff --git a/wcfsetup/install/files/lib/form/AbstractSecureForm.class.php b/wcfsetup/install/files/lib/form/AbstractSecureForm.class.php index 126ba235a4..46ee24acd5 100644 --- a/wcfsetup/install/files/lib/form/AbstractSecureForm.class.php +++ b/wcfsetup/install/files/lib/form/AbstractSecureForm.class.php @@ -1,11 +1,11 @@ checkSecurityToken(); } @@ -30,7 +29,7 @@ abstract class AbstractSecureForm extends AbstractForm { */ protected function checkSecurityToken() { if (!isset($_POST['t']) || !WCF::getSession()->checkSecurityToken($_POST['t'])) { - throw new IllegalLinkException(); + throw new UserInputException('__securityToken'); } } } diff --git a/wcfsetup/install/files/lib/form/AvatarEditForm.class.php b/wcfsetup/install/files/lib/form/AvatarEditForm.class.php index d12a39900c..f456d6ef88 100644 --- a/wcfsetup/install/files/lib/form/AvatarEditForm.class.php +++ b/wcfsetup/install/files/lib/form/AvatarEditForm.class.php @@ -18,7 +18,7 @@ use wcf\system\WCF; * @subpackage form * @category Community Framework */ -class AvatarEditForm extends AbstractForm { +class AvatarEditForm extends AbstractSecureForm { /** * @see wcf\page\AbstractPage::$enableTracking */ -- 2.20.1