tgoop.com/frontendInterview/4299
Create:
Last Update:
Last Update:
Почему лучше не встраивать строки непосредственно в DOM?
Передача строки непосредственно в DOM (Document Object Model) может привести к различным проблемам, связанным с безопасностью и корректностью рендеринга. Рассмотрим более подробно, почему это не рекомендуется.
XSS-атаки (Cross-Site Scripting):
Если строка содержит пользовательский ввод или динамически полученные данные, она может включать вредоносный код. Например, злоумышленник может вставить <script>
тег, который будет выполнен браузером и может украсть данные пользователей или выполнить другие вредоносные действия.
const userInput = "<img src='x' onerror='alert(\"XSS Attack\")'>";
document.getElementById('output').innerHTML = userInput;
Неправильный рендеринг HTML:
Строка, содержащая HTML-код, может быть неправильно интерпретирована или отрендерена браузером. Это может привести к некорректному отображению страницы или нарушению её структуры.
const invalidHTML = "<div>Unclosed tag";
document.getElementById('output').innerHTML = invalidHTML;
// Это может привести к неправильному отображению содержимого.
Как безопасно работать с динамическим контентом?
- Вместо передачи строк, рекомендуется использовать методы DOM API, такие как
createElement
, appendChild
, textContent
и другие. Эти методы позволяют безопасно добавлять элементы и текст в DOM.const userInput = "Safe text";
const outputElement = document.getElementById('output');
const textNode = document.createTextNode(userInput);
outputElement.appendChild(textNode);
- Если необходимо вставить HTML-код из строки, можно использовать методы, которые экранируют потенциально опасные символы.
const userInput = "<div>Safe content</div>";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;
// Использование textContent гарантирует безопасное добавление текста.
Примеры
Добавление текстового контента:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;
Создание и добавление элементов:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
const paragraph = document.createElement('p');
paragraph.textContent = userInput;
outputElement.appendChild(paragraph);
👉 @frontendInterview
BY Frontend Interview - собеседования по Javascript / Html / Css

Share with your friend now:
tgoop.com/frontendInterview/4299