[BUGFIX] Prevent XSS in ViewHelpers 93/47193/5
authorNicole Cordes <typo3@cordes.co>
Fri, 11 Mar 2016 10:17:33 +0000 (11:17 +0100)
committerHelmut Hummel <helmut.hummel@typo3.org>
Sun, 13 Mar 2016 21:44:38 +0000 (22:44 +0100)
This patch removes wrongly introduced missing escaping in ViewHelpers
and adds some documentation about escaping settings.

Resolves: #75016
Releases: master
Change-Id: If0dbd8a5f7506a78238e6245b1a6f568ec7b3e27
Reviewed-on: https://review.typo3.org/47193
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Tested-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Reviewed-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Tested-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Reviewed-by: Michael Oehlhof <typo3@oehlhof.de>
Reviewed-by: Daniel Goerz <ervaude@gmail.com>
Reviewed-by: Helmut Hummel <helmut.hummel@typo3.org>
Tested-by: Helmut Hummel <helmut.hummel@typo3.org>
typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/CaseViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/DebugViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/HtmlViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/HtmlentitiesViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/StripTagsViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/UrlencodeViewHelper.php

index e7def51..f338324 100644 (file)
@@ -18,6 +18,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * This ViewHelper renders CObjects from the global TypoScript configuration.
+ * NOTE: You have to ensure proper escaping (htmlspecialchars/intval/etc.) on your own!
  *
  * = Examples =
  *
index d9b7691..41a4e4c 100644 (file)
@@ -31,11 +31,6 @@ class CaseViewHelper extends AbstractViewHelper
     protected $escapeOutput = false;
 
     /**
-     * @var bool
-     */
-    protected $escapeChildren = false;
-
-    /**
      * @param mixed $value The switch value. If it matches, the child will be rendered
      * @param bool $default If this is set, this child will be rendered, if none else matches
      *
index ea27710..d406d41 100644 (file)
@@ -40,14 +40,18 @@ use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 class DebugViewHelper extends AbstractViewHelper
 {
     /**
+     * This prevents double escaping as the output is encoded in DebuggerUtility::var_dump
+     *
      * @var bool
      */
-    protected $escapeOutput = false;
+    protected $escapeChildren = false;
 
     /**
+     * Output of this viewhelper is already escaped
+     *
      * @var bool
      */
-    protected $escapeChildren = false;
+    protected $escapeOutput = false;
 
     /**
      * A wrapper for \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump().
index eb13c2f..55c2798 100644 (file)
@@ -85,11 +85,8 @@ use TYPO3\CMS\Fluid\Core\ViewHelper\Exception;
 class DateViewHelper extends AbstractViewHelper
 {
     /**
-     * @var bool
-     */
-    protected $escapeOutput = false;
-
-    /**
+     * Needed as child node's output can return a DateTime object which can't be escaped
+     *
      * @var bool
      */
     protected $escapeChildren = false;
index 687ea01..07ab91c 100644 (file)
@@ -60,11 +60,15 @@ class HtmlViewHelper extends AbstractViewHelper
     protected static $tsfeBackup;
 
     /**
+     * Disable escaping of child nodes' output
+     *
      * @var bool
      */
     protected $escapeChildren = false;
 
     /**
+     * Plain HTML should be returned, no output escaping allowed
+     *
      * @var bool
      */
     protected $escapeOutput = false;
index e4df5cb..0deab99 100644 (file)
@@ -41,11 +41,15 @@ use TYPO3\CMS\Core\SingletonInterface;
 class HtmlentitiesViewHelper extends AbstractEncodingViewHelper implements SingletonInterface
 {
     /**
+     * Output gets encoded by this viewhelper
+     *
      * @var bool
      */
     protected $escapeOutput = false;
 
     /**
+     * This prevents double encoding as the whole output gets encoded at the end
+     *
      * @var bool
      */
     protected $escapeChildren = false;
index 8d2b4ae..4f30335 100644 (file)
@@ -43,11 +43,15 @@ use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 class StripTagsViewHelper extends AbstractViewHelper
 {
     /**
+     * No output escaping as some tags may be allowed
+     *
      * @var bool
      */
     protected $escapeOutput = false;
 
     /**
+     * To ensure all tags are removed, child node's output must not be escaped
+     *
      * @var bool
      */
     protected $escapeChildren = false;
index d850c9f..27f4b45 100644 (file)
@@ -20,6 +20,7 @@ use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 /**
  * Encodes the given string according to http://www.faqs.org/rfcs/rfc3986.html (applying PHPs rawurlencode() function)
  * @see http://www.php.net/manual/function.rawurlencode.php
+ * Note: The output is not escaped. You may have to ensure proper escaping on your own.
  *
  * = Examples =
  *
@@ -42,11 +43,15 @@ use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 class UrlencodeViewHelper extends AbstractViewHelper
 {
     /**
+     * Prevent escaping for further processing
+     *
      * @var bool
      */
     protected $escapeOutput = false;
 
     /**
+     * Prevent double escaping on child node's output
+     *
      * @var bool
      */
     protected $escapeChildren = false;