aurelia: правильная очистка данных, связанных с внутренним HTML
Я прекрасно понимаю, что могу очистить данные, связанные с innerHTML, используя:
<div innerhtml.bind="someData | sanitizeHTML"></div>
Однако, исходя из моих наблюдений, эта дезинфекция только удаляет <script>
теги. Он не защищает пользователя от событийно-ориентированного контента, такого как:
"Hi! I am some HTML-formatted data from the server! <button onclick="getRekt();">Click me for butterflies!</button>"
Есть ли лучший способ предотвратить рендеринг ЛЮБОГО типа javascript или событий на элементе?
1 ответ
Преобразователь значений sanatizeHTML - это очень простое средство для очистки, которое удаляет только теги сценариев. Смотрите код здесь.
Вы можете создать свой собственный конвертер значений с более сложным дезинфицирующим средством. Проверьте этот ответ для более подробной информации о том, как дезинфицировать HTML в браузере.
Но не забывайте никогда не доверять браузеру, если вы можете лучше очистить HTML на стороне сервера, прежде чем отправлять его в браузер для отображения.