Сайт работает по-обычному: только админа пускает в админку, в админке он заполняет заголовок нового поста и его контент, затем axios отправляет POST-запрос по адресу "site.ru/news" (в заголовках как и положено лежит X-CSRF-TOKEN).
Так вот, меня волнует безопасность. Ведь продвинутый юзер не заходя в админку может отправить POST запрос по моему адресу "site.ru/news" со своими данными и по сути сервер обработает как надо и сохранит в базу. Какие действия умные люди предпринимают, чтобы такого не произошло?
Токен-то у каждого есть. И по токену серверу непонятно какими правами обладает приславший его пользователь. Совершенно необязательно использовать токен админа, достаточно прислать свой.
Я имею ввиду не будет иметь CSRF токена админа, который обычно делают зависимым от сессии авторизованного пользователя. Т.е. у админа будет свой токен, а у пользователя свой. Даже если пользователь подставит токен админа, то он не пройдет валидацию на стороне сервера, т.к. в сессии будет лежать совсем другое значение.
Даже если пользователь подставит токен админа, то он не пройдет валидацию на стороне сервера, т.к. в сессии будет лежать совсем другое значение.
А если подставит свой, то пройдёт. И если csrf-токен - это единственная проверка, которой защищена форма, то запрос будет обработан сервером как родной.
CSRF-токен нужен для того, чтобы удостовериться, что запрос происходит с ведома пользователя, грубо говоря. Какие права имеет этот пользователь, совершенно не важно, лишь бы токен совпал с тем, что есть в сессии, как вы правильно указали.
Всё, я понял о чем спрашивает автор - я не внимательно читаю вопросы :)
Я трактовал вопрос так: что будет если злоумышленник создаст у себя страницу на которой будет форма с автосабмитом отправляющая пост запрос с данными на endpoint как только на нее зайдет пользователь. Затем злоумышленник пригласит на эту страницу авторизованного админа. В таком случае запрос на endpoint будет выполнен с фиктивными данными и пройдет авторизацию (т.к. админ уже авторизован), а вот csrf токен соответствовать не будет, т.к. его не будет у злоумышленника. И в итоге сервер отклонит такой запрос.
Про то, что речь идет о банальной авторизации и проверке ролей я даже не подумал и подразумевал что она и так есть.