tami: JSON in HTML einbetten - RoR "vs" ZF

Beitrag lesen

hi tami,

hi molily,

Habe mal geschaut, wie Ruby on Rails das macht, ein vom Umfang her vergleichbares Webframework.

Rails 4 überschreibt die to_json-Methode von Hashes, sodass gefährliche Zeichen in Strings im JSON mit Unicode-Escape-Sequenzen kodiert werden.

Der Ruby-Hash
{foo: '</script><script>alert(/XSS/)</script>'}
wird durch to_json zum JSON
{"foo":"\u003C/script\u003E\u003Cscript\u003Ealert(/XSS/)\u003C/script\u003E"}

{"foo":"\u003C\/script\u003E\u003Cscript\u003Ealert(\/XSS\/)\u003C\/script\u003E"}

bringt mir:

<?php

require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
class ToJason {
    public $foo = '</script><script>alert(/XSS/)</script>';
}
$phpNative = new ToJason;
$json = Zend\Json\Json::encode($phpNative);
var_dump($json);

  
in der Encoder.php dann für Strings:  
  
~~~php
   /**  
     * JSON encode a string value by escaping characters as necessary  
     *  
     * @param string $string  
     * @return string  
     */  
    protected function _encodeString(&$string)  
    {  
        // Escape these characters with a backslash or unicode escape:  
        // " \ / \n \r \t \b \f  
        $search  = array('\\', "\n", "\t", "\r", "\b", "\f", '"', '\'', '&', '<', '>', '/');  
        $replace = array('\\\\', '\\n', '\\t', '\\r', '\\b', '\\f', '\\u0022', '\\u0027', '\\u0026',  '\\u003C', '\\u003E', '\\/');  
        $string  = str_replace($search, $replace, $string);  
  
        // Escape certain ASCII characters:  
        // 0x08 => \b  
        // 0x0c => \f  
        $string = str_replace(array(chr(0x08), chr(0x0C)), array('\b', '\f'), $string);  
        $string = self::encodeUnicodeString($string);  
  
        return '"' . $string . '"';  
    }

mfg

tami

mfg

tami

0 48

PHP array an javascript function übergeben

javascriptnewbie
  • javascript
  1. 0
    dedlfix
  2. 0
    Der Martin
    1. 0
      molily
    2. 0
      javascriptnewbie
      1. 0
        M.
        1. 0

          Gute Idee

          Tom
          • menschelei
      2. 1
        ChrisB
        1. 0
          javascriptnewbie
          1. 0
            molily
            1. 0
              javascriptnewbie
              1. 0
                M.
              2. 6
                molily
      3. 0
        Tom
        1. 0
          javascriptnewbie
          1. 0
            Tom
            1. 0
              Sven Rautenberg
              1. 0

                Nicht nur meckern, zeigen! Escaping für JavaScript-Variablen

                Tom
                1. 0
                  molily
                  1. 0
                    tami
                    1. 0
                      molily
                      1. 0
                        tami
                  2. 0
                    Tom
                    1. 0
                      molily
              2. 0

                PHP json_encode - kontextspezifisches Escaping

                tami
                1. 0
                  tami
                  1. 0
                    molily
                    1. 0
                      Sven Rautenberg
                      1. 0
                        molily
                        1. 0
                          molily
                        2. 0

                          JSON in HTML einbetten

                          molily
                          1. 1

                            JSON in HTML einbetten - RoR "vs" ZF

                            tami
                            1. 0
                              tami
                              1. 0
                                Tom
                                1. 0
                                  molily
                            2. 0
                              molily
                              1. 0
                                tami
                                1. 0
                                  tami
                              2. 0

                                JSON-Paket mit composer vom Zend Framework holen

                                tami
                              3. 2

                                JSON in HTML einbetten

                                molily
                                • php
                          2. 0

                            Reihenfolge der Auswertung?

                            Tom
                            1. 0
                              tami
                            2. 0
                              tami
                            3. 0

                              Reihenfolge der Auswertung? Codierung, kleine Korrektur

                              Tom
                            4. 0
                              molily
                              1. 0
                                Tom
                                1. 0
                                  molily
                  2. 0
                    Tom