PHP :Кодирование атрибутов HTML/декодирование JavaScript

Как правильно кодировать ненадежные данные для Контекст атрибута HTML? Например:


Я обычно использую htmlentities()или htmlspecialchars()для этого:


Однако недавно я столкнулся с проблемой, из-за которой это нарушало работу моего приложения, когда данные, которые мне нужно было передать, были URL-адресом, который нужно было передать отключите JavaScript, чтобы изменить расположение страницы.:



В данном случае foo— это программа на C, и она не понимает закодированные символы в URL-адресе и segfaults.

Я могу просто взять значение в JavaScript и сделать что-то вроде value.replace('&', '&'), но это выглядит неуклюжим и работает только для амперсандов.

Итак, мой вопрос: :есть ли лучший способ кодирования или декодирования данных, которые вводятся в атрибуты HTML?

Я прочитал всю Памятку OWASP по предотвращению XSS , и мне кажется, что если я тщательно цитирую свои атрибуты, то единственный символ, который мне нужно кодировать, — это сама цитата (")-, в этом случае я мог бы использовать что-то вроде str_replace('"', '"',...)-, но я не уверен, правильно ли я это понимаю.

7
задан FtDRbwLXw6 4 May 2012 в 12:48
поделиться