2016-10-31 4 views
0

Колба Войти перенаправляет /login?next=/protected/123, когда я не вошел в Anybody может также использовать /login?next=phishingsite.com/give_me_your_password_again, поскольку я использую:.Защита входа от malacious входа

redirect(request.args.get('next','/') 

Как проверить, что URL присутствует в том же приложение?

+0

Как Колба-Логин [пример] (https://flask-login.readthedocs.io/ru/last/# login-example), вы можете реализовать функцию под названием 'next_is_valid', чтобы реализовать все ваши проблемы для' next' URL. –

+0

@ kiran.koduru, какую логику следует реализовать внутри 'next_is_valid'? – aitchnyu

+0

Помог ли приведенный ниже пример? –

ответ

0

Вы можете добавить функцию под названием next_is_valid, чтобы проверить, если next происходит от того же хозяина, как так:

from urlparse import urlparse 

def next_is_valid(url): 
    parsed = urlparse(url) 
    if parsed.hostname and parsed.hostname == request.url_root: 
     return True 

    # if there is no hostname since it's a relative URL 
    elif not parsed.hostname: 
     return True 
    return False 


# in your flask app route handler check if next_is_valid returns True 
if not next_is_valid(request.args.get('next')): 
    abort(400) 
Смежные вопросы