Възможно ли е пренасочване към друга мрежа след влизане в системата python-social-auth
?
да речем:
<a href="{% url "social:begin" "facebook" %}?next={{ request.path }}"></a>
Примерът по-горе е в съответствие с документацията и работи добре, но когато опитам това:
<a href="{% url "social:begin" "facebook" %}?next=http://www.google.com/"></a>
Получавам следната грешка:
http://example.com:8000/accounts/profile/ Not Found
Това има смисъл; Нямам определен URL адрес
В този момент вече съм влязъл в системата, но виждам страница за грешка.
Но със същата конфигурация, ако пренасоча към моя сайт, това работи, мисля, че това е нещо за настройките, но не знам коя.
РЕДАКТИРАНЕ:
Ако премахна next
GET Param в първата конфигурация, той повдига същата грешка.
Отговори:
1 за отговор № 1Не е безопасно да пренасочите към друг домейн, напр. https://www.google.com
, За да разберете защо, си представете, че изпращам на потребителите ви връзка към:
http://www.yoursite.com/login?next=http://myevilsite.com
Ако страницата ви за вход е доверена на next
url, след което потребителите ще бъдат пренасочени към сайта ми, след като са влезли в системата. Мога да го използвам за фишинг атаки.
За да предотврати това, Django проверява дали следващият url е безопасен за пренасочване. Ако не е безопасно, то ще пренасочи към settings.LOGIN_REDIRECT_URL
, която по подразбиране е /accounts/profile/
, Можеш виж кода тук.