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);
mfg
tami