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 -)?


"GET /example/?_=1577318397252 HTTP/1.1" 200 -

как-то так, имхо

timestamp=request.args.get('_', None)
if timestamp is None:
  abort(401)
router ★★★★★
()
Ответ на: комментарий от router

Точно, спасибо, не доперло аргументы перехватить.

bikes
() автор топика
Ответ на: комментарий от grazor

Спасибо за информацию, не знал такого (давно не трогал фронтэнд).

AlexKiriukha ★★★★
()
Ответ на: комментарий от 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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.