使用 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 参数,它会引发相同的错误。
最佳答案
重定向到不同的域是不安全的,例如https://www.google.com
。要理解原因,假设我向您的用户发送了一个链接:
http://www.yoursite.com/login?next=http://myevilsite.com
如果您的登录页面信任 next
url,那么您的用户将在登录后被重定向到我的站点。我可以将其用于网络钓鱼攻击。
为了防止这种情况发生,Django 检查下一个 url 是否可以安全地重定向到。如果不安全,它将重定向到 settings.LOGIN_REDIRECT_URL
,默认为 /accounts/profile/
。你可以see the code here .
关于python - Python-social-auth 登录后重定向到另一个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35759832/