Как стать автором
Обновить

Комментарии 11

Это уязвимость


data = data.replace('<script>__INITIAL_DATA__</script>', `<script>window.__INITIAL_DATA__ = ${JSON.stringify(store.getState())};</script>`);

Если в любой строке из state будет


"</script><script>alert('hack')</script>"

то это сработает, парсер html не смотрит, что там js строка. Просто сохраните в html файл такой код и посмотрите


<script>
  const json = {"text":"</script><script>alert(1)</script>" };
  console.log(json);
</script>
Спасибо, да, согласен.
Но этот код же выполняется на стороне сервера, state формируется также на сервере, откуда там взяться XSS, если мы там контролируем сами все

У вас пользователи не добавляют контент (комментарии?), нет данных от сторонних апи и вы уверены в каждом сотруднике? XSS тут есть. То, что его не могут использовать посторонние люди другой вопрос.

С замечанием согласен, проблема возможна.
Но в нашем случае все API надежное и если уже добавление контента будет, то оно будет обрабатываться при сохранении, а не при чтении.
Хотелось бы поподробнее про проблемы с Next.js. По своему опыту могу сказать, что разработка на Next — просто сказка, когда разбираешься с его особенностями.
Если разрабатывать с 0 проект, то большинство проблем можно избежать. + в 9й версии Next.js тоже некоторые возникшие проблемы уже не актуальны.
На данный момент могу только в виде видео показать www.youtube.com/watch?v=eenX8EGkTZM
Ну, девятой версии скоро будет полгода. О проблемах восьмой версии уже и правда немного неактуально говорить.

Можно выводы, стоит ли игра свеч? Насколько быстрее стало рендериться приложение?

Задача выполнялась больше для SEO, с перформансом проблем у нас не было.
Для SEO задача выполнена на 100%, все показатели 90-98.
Касаемо скорости загрузки всего контента, разница в 2 раза, SSR шустрее.

SSR:


Без SSR:

А что скажите по поводу Razzle?

Не использовал его, но подход очень похож на описанный мной выше.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории