XSS и CSRF - ооочень разные вещи, которые, я полагаю, вам не следует смешивать в одном вопросе.
XSS - это отображение пользовательского ввода без какой-либо дезинфекции на вашей стороне / в вашем html. И этот пользовательский ввод может содержать javascript, который крадет cookie или отправляет личное сообщение и т. Д. От имени текущего пользователя. Очевидно, чтобы предотвратить необходимость дезинфекции или сброса всего, что исходит от пользователя. Но React делает это для вас, пока вы не настолько рискованны, что используете dangerouslySetInnerHTML
Что касается CSRF и некоторого внешнего клиента - что вы имеете в виду "Но это не предотвращает атаку csrf"? Использует ли клиент токен аутентификации, и вы не проверяете его, чтобы кто-нибудь мог отправить запрос в ваш код, который обрабатывает это?