hi molily,
$json = Zend\Json\Json::encode($phpNative);
Guter Hinweis. Ich war bei meinen Recherchen darauf gestoßen, dass Zend einen eigenen JSON-Encoder bietet und hatte vermutet, dass der entsprechende Vorzüge gegenüber der eingebauten Low-Level-Funktion json_encode hat.
Übrigens ist der als separates Composer-Paket unter zendframework/zend-json verfügbar, der Zend Escaper unter zendframework/zend-escaper. Es spricht also nichts dagegen, sie in einem beliebigen PHP-Projekt einzusetzen. (Soweit ich das als PHP-Laie sagen kann.)
- PHP (neuere Version) runtergeladen von: http://windows.php.net/download/ (VC9 Threadsafe, für Windows) [weil composer 5.3+ erwartet]
- liegt jetzt in c:/php
- ggfs. noch die Umgebungsvariable PATH um diesen Pfad erweitern
- php.ini aus dem vorhandenen template erstellt (also php.ini-developer gespeichert unter php.ini) (im verzeichnis php) mit "extension_dir = "ext"" (weil da die extensions bei mir drinne sind, s. download oben) und "extension=php_openssl.dll" versehen (bzw. einkommentiert/auskommentiert wie das auch immer heißt), weil sonst der (vermutlich via php unnötige) download von composer.phar nicht funktioniert
- in c:/composer-test die composer.phar platziert, die ich mit "php -r "readfile('http://getcomposer.org/installer');" | php" heruntergladen hatte (lag dann in meinem User-Dir), kann man auch so runterladen, ist eine PHP-Archiv-Datei("PH"-"Ar")
- die composer.json angepasst (im verzeichnis c:/composer-test) zu:
{
"repositories": [
{
"type": "composer",
"url": "https://packages.zendframework.com/"
}
],
"require": {
"zendframework/zend-json": "2.0.*"
}
}
~~~ gemäß <http://framework.zend.com/downloads/composer>
- dann: php composer.phar install ...
D:\composer-test>php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing zendframework/zend-stdlib (2.0.8)
Downloading: 100%
- Installing zendframework/zend-json (2.0.8)
Downloading: 100%
zendframework/zend-stdlib suggests installing pecl-weakref (Implementation of we
ak references for Stdlib\CallbackHandler)
zendframework/zend-json suggests installing zendframework/zend-server (Zend\Serv
er component)
Writing lock file
Generating autoload files
Im Verzeichnis ist jetzt das Verzeichnis "vendor" enstanden.
Der Code (aus dem Verzeichnis, in dem der Ordner "vendor" liegt)
~~~php
<?php
require_once "vendor/autoload.php";
class ToJason {
public $foo = '</script><script>alert(/XSS/)</script>';
}
$phpNative = new ToJason;
$json = Zend\Json\Json::encode($phpNative);
var_dump($json);
"funzt".
php -f "json_test.php"
string(82) "{"foo":"\u003C/script\u003E\u003Cscript\u003Ealert(/XSS/)\u003C/script\u003E"}"
Exit code: 0
mfg
tami