TGViewer
Жабаскрипт (веде Віктор Турський) Жабаскрипт (веде Віктор Турський) @jabascript · 4.72K subscribers
Post #7 1.14K
В JavaScript не так давно добавили тип данных Symbol. Обычно говорят, что Symbol дает возможность хранить метаданные в объекте или возможность реализации условно приватных свойств объекта. Но есть и другая сторона, Symbol решает ряд проблем и безопасностью приложения.

Отличный пост от Дэна Абрамова на эту тему. Основная идея в том, что React узлы внутри представлены в виде JSON объектов. И код, который вы считаете безопасным <p>{message.text}</p>,
на самом деле, содержит XSS уязвимость. Если message.text содержит пользовательский ввод и мы рендерим React на сервере, то злоумышленик может вставить в message.text JSON объект, который описует любую React ноду. Для того, чтобы от этого защититься, в JSON объекте должно быть свойство $$typeof и Symbol в качестве значения. В таком случае, злоумышленик не сможет заранее предсказать Symbol.

Статья - https://overreacted.io/why-do-react-elements-have-typeof-property/

Еще отличный пример - это Sequalize. Для описания запроса раньше использовались строковые операторы

Post.findAll({
where: { 'or': [{authorId: 12}, {authorId: 13}] }
});

сейчас это:

Post.findAll({
where: { [Op.or]: [{authorId: 12}, {authorId: 13}] }
});

где Op.or это Symbol, что не позволяет злоумышленику так просто сделать ORM Injection.
overreacted.io Why Do React Elements Have a $$typeof Property? — overreacted It has something to do with security.
More from @jabascript
  1. Oct 9, 2026Hey team! Quick one before the weekend (життєво 🙈): https://www.youtube.com/watch?v=3TNpO…
  2. Sep 30, 2026Ну шо... https://youtu.be/I5_D15gCDDQ
  3. Sep 29, 2026🏎️🏁Забирайте трофеї й знову нові тижневі челенджі 🏎️🏁
  4. Sep 26, 2026"Найкраща мова програмування - англійська" DHH Зараз багатьом підгорає від останньої допов…
  5. Sep 22, 2026Забирайте трофеї й знову нові тижневі челенджі 🏎️🏁
  6. Sep 14, 2026Втомилися чекати на дашборди? Не знаєте, як тестувати AI-агентів? Або цікавитесь, як працю…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →