Плюсы и минусы перенаправления с помощью HTTP Referer?

В настоящее время я работаю над приложением Simgle Flask с React в качестве интерфейса. Я хочу иметь элегантный способ перенаправления пользователя на его предыдущую страницу после завершения процесса входа в систему. После некоторого исследования я понял, что использование атрибута HTTP Referer может работать очень хорошо, как показано ниже.

from flask import request

## Massive other code omitted

@app.route(""/login")
def log_in():
    return redirect(request.referer)

Я знаю, что заголовок реферера добавляется браузером. Вопрос в том, является ли это хорошей практикой для перенаправления пользователя туда, откуда он пришел, с помощью HTTP-реферера? Есть ли какие-либо скрытые опасения при использовании этого подхода?


person zhaooyue    schedule 01.12.2019    source источник


Ответы (1)


вы можете создать функцию, которая возвращает хороший и безопасный URL-адрес для перенаправления, и использовать его в представлении входа в систему.

def safe_redirect_url():
    next_url = request.args.get('next') or request.referrer or url_for("index")
    if next_url and url_parse(next_url).netloc == "":
        return next_url
    return None

перед перенаправлением вы можете добавить проверку, например:

 url = safe_redirect_url()
 if url:
     redirect(url)
 else:
     return "Error"
person Turabek Holmirzaev    schedule 01.12.2019