2012-06-18 3 views
0

Я включаю JSON в HTML-тег, учитывая, что единственными возможными входными символами для JSON будут "':{},[a-z][0-9] Возможно ли, чтобы JSON или HTML были разбиты с моим подходом? С чем следует опасаться при использовании JSON через HTML и Javascript?JSON в HTML escaping

<input type="hidden" value="<?=htmlspecialchars(json_encode($myArray));?>" /> 
+0

JSON позволяет использовать JS-строки, которые могут включать специальные символы HTML/SGML/XML '<', '>', '&' (и '' 'и' '', если они используются в атрибутах HTML). – Lucero

ответ

1

JSON может содержать почти любой символ в своих строках. Поскольку вы используете его в атрибуте, должно быть достаточно escape_quotesaddslashes, что зависит от вашей (X) HTML-версии. В любом случае, htmlspecialchars.

+0

этот? http://php.net/manual/en/function.addslashes.php Кто-то сказал, что не избегать одиночных кавычек для JSON. Почему бы вам не хотеть этого? –

+0

Вы правы, спасибо. Вам не нужно избегать одиночных кавычек, только когда вы используете их как разделители атрибутов HTML ... – Bergi

1

в definition of json, одно из значений его Возможное строку. который может содержать <, > среди прочего

Вы можете использовать base64, чтобы избежать этого.

+1

Может быть, хорошая идея используйте urlsafe base64, если вы его base64. (base64 с - вместо + и _ вместо /, необязательно с отступом удалены), чтобы избежать кодирования текста. Вероятно, не требуется, но сэкономит некоторое пространство с текстом. – Dre

+0

AFAIK urlsafe its не стандартный, и его сложнее получить кодировщик/декодер, но я могу ошибаться. – Jarry