Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Замена хештегов на ссылки (https://javascript.ru/forum/dom-window/83517-zamena-kheshtegov-na-ssylki.html)

ksa 30.12.2021 22:19

Цитата:

Сообщение от VladKireev
безопасно ли использовать innerHTML или нет..

Ты какую безопасность или опасность имеешь ввиду?

Цитата:

Сообщение от VladKireev
Планируется, что пользотели будут оставлять комментарии с хештегами, которые после отпарвки комментария должны преобразовываться в ссылки. В этом случае есть риск?

Риск чего? :blink:

Тексты в ДОМ записываются в текстовые ноды... Можно их перебирать и изымать из них эти "хеш теги"...
И вместо них добавлять созданные ссылки.
Вот я тут одному форумчанину пример такой показывал.
https://javascript.ru/forum/misc/835...dokumente.html

Т.ч. можно работать и с нодами...
Я пока не пойму чем ты рискуешь?
Какой опасности опасаешься?

VladKireev 30.12.2021 23:36

Цитата:

Сообщение от ksa
Ты какую безопасность или опасность имеешь ввиду?

Нашел несколько статей, в которых говорится что использования innerHTML создает уязвимость для XSS атак. Как я понимаю подмены кода на вредоносный.

VladKireev 30.12.2021 23:39

И еще возникла проблемка:
Предложенный код преобразует весь текст на странице в единый абзац - убирает все <p></p>. Видимо в одну строку? А также стирает ссылки, поставленные вручную.
Подскажите, пожалуйста, как исключить такое поведение?

рони 31.12.2021 07:51

Цитата:

Сообщение от VladKireev
как исключить такое поведение?

читать про TextNode, искать TextNode, менять TextNode на ссылки.

смотри пост выше ksa, #11

ksa 31.12.2021 12:42

Цитата:

Сообщение от VladKireev
говорится что использования innerHTML создает уязвимость для XSS атак

За говнюками следить довольно сложно... У них мозги работаю иначе чем у разработчиков... :-E
Мы создаем, они стараются поломать.

Смотри как работать с текстовыми нодами. Меняй текст в них.
Т.о. ты сузишь им пространство для вредоносности. ;)


Часовой пояс GMT +3, время: 08:40.