 core/includes/common.inc                      |  7 +++++++
 core/lib/Drupal/Core/Form/FormBuilder.php     | 12 ++++++++++++
 core/lib/Drupal/Core/Render/Element/Token.php |  6 ++++++
 3 files changed, 25 insertions(+)

diff --git a/core/includes/common.inc b/core/includes/common.inc
index 8438f88..955e228 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -145,6 +145,13 @@
  */
 const LOCALE_PLURAL_DELIMITER = "\03";
 
+function yar(array $element, array $context) {
+  $value = \Drupal::csrfToken()->get($context['csrf_token_value']);
+  $element['#markup'] = str_replace($context['placeholder'], $value, $element['#markup']);
+  return $element;
+}
+
+
 /**
  * Adds output to the HEAD tag of the HTML page.
  *
diff --git a/core/lib/Drupal/Core/Form/FormBuilder.php b/core/lib/Drupal/Core/Form/FormBuilder.php
index 4b995c1..2ef90db 100644
--- a/core/lib/Drupal/Core/Form/FormBuilder.php
+++ b/core/lib/Drupal/Core/Form/FormBuilder.php
@@ -604,14 +604,26 @@ public function prepareForm($form_id, &$form, FormStateInterface &$form_state) {
       // Otherwise, generate a public token based on the form id.
       else {
         $form['#token'] = $form_id;
+
+        $callback = 'yar';
+        $context = [
+          'placeholder' => Crypt::randomBytesBase64(55),
+          'csrf_token_value' => $form['#token'],
+        ];
         $form['form_token'] = array(
           '#id' => Html::getUniqueId('edit-' . $form_id . '-form-token'),
           '#type' => 'token',
+          '#placeholder' => $context['placeholder'],
           '#default_value' => $this->csrfToken->get($form['#token']),
           // Form processing and validation requires this value, so ensure the
           // submitted form value appears literally, regardless of custom #tree
           // and #parents being set elsewhere.
           '#parents' => array('form_token'),
+          '#post_render_cache' => array(
+            $callback => array(
+              $context,
+            ),
+          ),
         );
       }
     }
diff --git a/core/lib/Drupal/Core/Render/Element/Token.php b/core/lib/Drupal/Core/Render/Element/Token.php
index 8b526c2..0150c22 100644
--- a/core/lib/Drupal/Core/Render/Element/Token.php
+++ b/core/lib/Drupal/Core/Render/Element/Token.php
@@ -29,12 +29,18 @@ public function getInfo() {
     return array(
       '#input' => TRUE,
       '#pre_render' => array(
+        [$class, 'something'],
         array($class, 'preRenderHidden'),
       ),
       '#theme' => 'input__hidden',
     );
   }
 
+  public static function something($element) {
+    $element['#attributes']['value'] = $element['#placeholder'];
+    return $element;
+  }
+
   /**
    * {@inheritdoc}
    */
