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 на стороне сервера, прежде чем отправлять его в браузер для отображения.

Другие вопросы по тегам