Токен CSRF не проверен для формы с помощью метода GETPython

Программы на Python
Anonymous
Токен CSRF не проверен для формы с помощью метода GET

Сообщение Anonymous »

Я пытаюсь реализовать токен защиты от CSRF в фиктивном приложении Flask с двумя формами на одной странице.
Проверка токена CSRF работает для формы POST (маршрут /change_password), но не для формы обновления электронной почты ( маршрут /update_email).
Каждый раз, когда я пытаюсь перехватить запрос и удалить токен из запроса на обновление электронной почты, он принимается.
Если я делаю то же самое для формы смены пароля, он отклоняется с сообщением «CSRF токен сеанса отсутствует». ошибка

Код: Выделить всё

@app.route('/update_email', methods=['GET'])
def update_email():
if 'username' not in session:
return redirect(url_for('login'))
username = session['username']
new_email = request.form.get('email')
if new_email:
users[username]['email'] = new_email
return redirect(url_for('profile'))

@app.route('/change_password', methods=['POST'])
def change_password():
if 'username' not in session:
return redirect(url_for('login'))
username = session['username']
new_password = request.form.get('new_password')
if new_password:
users[username]['password'] = new_password
return "Password changed successfully", 200
return "New password is required", 400
html:

Код: Выделить всё


Welcome, {{ username }}!
Your email: {{ email }}

Update Email








Change Password








[url={{ url_for(]Logout[/url]


Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... get-method

Вернуться в «Python»