LINUX.ORG.RU

flask как сделать запрет?

 ,


0

1

К примеру роут:

@app.route('/example')
def ex():
    t = {'data':'test'}
    return jsonify(t)

Скажем этот роут обрабатывается ajax запросом ("GET /example/?_=1577318397252 HTTP/1.1" 200 -). Интересует как делать запрет на прямой GET запрос ("GET /example/ HTTP/1.1" 200 -)?


Ответ на: комментарий от AlexKiriukha

Вот только новый модный fetch этот заголовок уже не передаёт.

https://github.com/github/fetch/issues/17

Емнип, когда-то были разговоры о том, чтобы удалить из джанги метод is_ajax по этой причине.

grazor ()
Ответ на: комментарий от ei-grad

Речь про запросы, которые не меняют данные на сервере. При чем тут CSRF. В чем дыра, можно более подробно написать? И обычно на фласке если не передается этот токен, то такой запрос не пропускается, если установлено CSRF_ENABLED = True

bikes ()
Последнее исправление: bikes (всего исправлений: 1)
Ответ на: комментарий от bikes

Дыра - в попытке ограничить возможность выполнять запрос по какому-то левому признаку. Примерно таким же способом джуны php’шники «защищаются» от CSRF. Если нужно чтобы запрос мог выполняться только с одной страницы - выдай для этой страницы токен. GET/POST/меняет состояние/не меняет - не важно.

ei-grad ★★★★★ ()
Ответ на: комментарий от ei-grad

Если нужно чтобы запрос мог выполняться только с одной страницы

Или я не понимаю… но, мне нужно было, чтоб запрос выполнялся только через javascript/ajax. Чтоб пользователь не мог через браузер загрузить, зачем ему видеть массив данных. Какие к черту csrf токены здесь.

bikes ()
Последнее исправление: bikes (всего исправлений: 2)
Ответ на: комментарий от ei-grad

Раз мы уж тут про безопасность, поинтересуюсь. Как поможет этот токен от подделки данных в post запросе? Т.е. сервер отдал какие то данные, пользователь перехватил и вместе с токеном отправил другие. Как от такого защищаться? Как правильно валидировать данные в таком случае?

bikes ()