опасноSetInnerHTML — это атрибут элементов DOM в React.
Согласно официальной документации , опасноSetInnerHTML является заменой React для использования innerHTML в DOM браузера для установки HTML программно или из внешнего источника.
В простом ванильном JS для вставки HTML на веб-страницу мы используем свойство innerHTML, как показано ниже.
<div innerHTML=<p>A sample paragraph</p></div>
or
document.querySelector(".testClass")= '<p>A sample paragraph</p>';
Синтаксис для использованияhazardlySetInnerHTML довольно прост. Вместо innerHTML вы должны напечатать опасноSetInnerHTML и передать объект с ключом __html. Например:
<div dangerouslySetInnerHTML={{__html: '<p>lorem ipsum</p>'}}></div>
Имя опасноSetInnerHTML выбрано намеренно, чтобы быть пугающим. Это не ошибка в названии.
Как правило, настройка HTML из кода сопряжена с риском, поскольку это может подвергнуть ваших пользователей атаке с использованием межсайтовых сценариев (XSS) . Вы можете установить HTML прямо из React, но вам нужно ввести dangerouslySetInnerHTMLи передать объект с __htmlключом, чтобы напомнить себе, что это опасно.
Если вы разрешаете пользователям вставлять HTML-код непосредственно на вашу веб-страницу, технически они могут встраивать сценарии и вредоносный код, и когда вы отображаете этот HTML-код в своем приложении для реагирования, эти сценарии могут выполняться. Пример показан ниже.
import React from "react";
import './App.css';
const App = () => {
const data = `
<h3>Welcome to this page</h3>
<p>May the code be with you</p>
<img src=??? onerror="alert('XSS')" />
`;
return (
<div className="App">
<h2>Understanding dangerouslySetInnerHTML</h2>
<div
style={{ padding: "10px", fontSize: '17px', textAlign: 'center' }}
dangerouslySetInnerHTML={{ __html: data }}
></div>
</div>
);
}
export default App;
Пример того, как вы можете очистить свой код с помощью dompurify, показан ниже:
Когда вы используете опасно SetInnerHTML, за кулисами это позволяет React узнать, что HTML внутри этого компонента — это не то, что его волнует, так как он исходит из другого источника.
Поскольку React использует виртуальный DOM, при сравнении различий с реальным DOM он может просто пропустить сравнение с виртуальным DOM, чтобы получить дополнительную производительность.
Если вы просто используете innerHTML, React не сможет узнать, что узел DOM был изменен.
В заключение, dangerouslySetInnerHTMLэто не что иное, как замена innerHTMLв React, и его следует использовать с осторожностью. Имя опасноSetInnerHTML выбрано намеренно, чтобы напомнить вам, что это опасно и может привести к уязвимостям XSS, поэтому вы должны убедиться, что ваш HTML очищен, прежде чем вставлять его в свое приложение для реагирования.
Больше контента на PlainEnglish.io . Подпишитесь на нашу бесплатную еженедельную рассылку . Следите за нами в Twitter и LinkedIn . Присоединяйтесь к нашему сообществу Discord .
Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.
Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.
Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.
Было уже за полночь, когда Хейден отвез Кэти обратно в общежитие колледжа после их совместного вечера. У нее был ранний урок утром, и у нее не было другой смены одежды после того, как она осталась с ним прошлой ночью.
Когда вы вырастаете, вам, как правило, говорят, что мир такой, какой он есть, и ваша жизнь состоит в том, чтобы просто жить своей жизнью внутри мира, никогда не рискуя своей жизнью, просто следовать установленному пути и умереть в конце, и стараться не слишком сильно бить стены. Но это очень ограниченная жизнь.
В современном гиперсвязанном мире системы СМИ играют ключевую роль в формировании общественного мнения и, следовательно, в демократическом принятии решений. В своем глубоком анализе политической экономии коммуникации ученый Роберт МакЧесни бросает вызов общепринятому мнению и представляет то, что он называет «пятью истинами» о СМИ.