HTML / Javascript. Должен ли я кодировать, экранировать или очищать созданные пользователем строки для атрибутов alt (тегов<img />)?
Кажется, есть много принятых ответов относительно того, нужно ли кодировать сгенерированные пользователем атрибуты HTML (alt
атрибут изображения, например), "избежать" их или "очистить" их.
Мне интересно: если я отображаю сгенерированные пользователем атрибуты alt для элементов img, как мне их кодировать (если вообще нужно), я должен и кодировать, и дезинфицировать? Должен ли я и дезинфицировать, и убежать?
Если я знаю, что какой-либо символ имеет возможность показать, как я должен обрабатывать эту сгенерированную пользователем строку, прежде чем устанавливать ее как атрибут alt?
2 ответа
Я использую React.js для генерации разметки, в которой эта сгенерированная пользователем строка используется как атрибут alt тега img
Предполагая, что вы имеете в виду, что у вас есть что-то вроде:
<img alt={this.props.alt} />
... тогда нет, вам не нужно ничего делать. Реакт работает на DOM. Вы не генерируете исходный код HTML, поэтому специальные символы в данных нельзя использовать для внедрения JavaScript через уязвимость XSS.
Требуется санация, поэтому нет проблем с отображением строки. Если вы храните атрибут alt в базе данных, вам определенно следует экранировать строку.