python - Python-social-auth 登录后重定向到另一个域

标签 python django redirect python-social-auth

使用 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/

相关文章:

python - Django:在我的模型中使用标准 Auth 库

javascript - 如何在 Firefox 中跟踪重定向?

python - 带有 MultiIndex : Group by year of DateTime level values 的 Pandas DataFrame

python - Cython 与 Python 3.3

python - 在图像上重复创建文本的算法

python - 使用 Python 填写没有名称和 ID 的 Web 表单

django - 编辑 urls.py 需要重新启动网络服务器吗?

Django 按站点缓存和 Vary : Cache

http - 如何在没有烦人的错误消息的情况下从 HTTPS 重定向到 HTTP

redirect - 如何使特定网页无法访问,除了那些通过重定向到达那里的人