Как правильно кодировать ненадежные данные для Контекст атрибута HTML? Например:
Я обычно использую htmlentities()
или htmlspecialchars()
для этого:
Однако недавно я столкнулся с проблемой, из-за которой это нарушало работу моего приложения, когда данные, которые мне нужно было передать, были URL-адресом, который нужно было передать отключите JavaScript, чтобы изменить расположение страницы.:
В данном случае foo
— это программа на C, и она не понимает закодированные символы в URL-адресе и segfaults.
Я могу просто взять значение в JavaScript и сделать что-то вроде value.replace('&', '&')
, но это выглядит неуклюжим и работает только для амперсандов.
Итак, мой вопрос: :есть ли лучший способ кодирования или декодирования данных, которые вводятся в атрибуты HTML?
Я прочитал всю Памятку OWASP по предотвращению XSS , и мне кажется, что если я тщательно цитирую свои атрибуты, то единственный символ, который мне нужно кодировать, — это сама цитата ("
)-, в этом случае я мог бы использовать что-то вроде str_replace('"', '"',...)
-, но я не уверен, правильно ли я это понимаю.