【问题标题】:Set cookies on another domain using curl使用 curl 在另一个域上设置 cookie
【发布时间】:2011-02-09 22:27:30
【问题描述】:

是否可以使用 curl 或其他方式在另一个域上设置 cookie?我可以访问其他域上可以设置 cookie 的 php 文件,但我不知道如何使用 curl 访问该 php 文件然后设置 cookie。

【问题讨论】:

  • 您是否尝试在客户端浏览器上设置 cookie?如果是这样,请放弃。
  • 我也不确定你知道 curl 是什么。
  • 是的,我正在尝试设置登录 cookie,这样当用户从一个站点跳转到下一个站点时,他们不需要登录到第二个站点。
  • @jdeans:不可能,抱歉。
  • @jdeans:友善并接受答案,因为它们似乎都是有效的。 =)

标签: php cookies curl


【解决方案1】:

您可以使用 cURL 从另一个域获取 cookie ID,然后在您的程序中使用它,但如果您的意思是在浏览器上设置 cookie - 不,您不能,cookie 只能为它们所在的域设置生成于。

【讨论】:

    【解决方案2】:

    如果您尝试在第二个站点上设置一种自动登录(或类似方式)的方式,并且您控制了该站点,那么您实际上只有一个选项(也许还有更多我不知道的选项)。

    • 生成nonce 并存储在db中
    • 将当前日期/时间和用户代理关联起来
    • 通过 GET 将其附加到第二个站点的链接

    现在,当第二个站点收到带有此 GET 参数的入站链接时,它应该

    • 验证 nonce 是否存在
    • 验证用户代理没有改变
    • 验证 nonce 创建和请求之间的时间不会太长(我选择 10 分钟)。
    • 删除随机数

    注意

    此会话可能被劫持,例如被中间的某个人劫持。但是劫持它的人必须做所有这些事情

    • 查看传出的 nonce
    • 复制它并原始人访问该网站
    • 拥有相同的用户代理字符串

    记住这一点。

    您也可以检查 IP 是否不变,但这可能会导致某些人的 IP 更改时无法通过身份验证,并且对使用相同外部 IP 的多人没有帮助。

    【讨论】:

    • 这正是我想要做的 :) 第二个站点需要在登录后设置一个 cookie。上面发布的步骤中有两个问题。 1.我是否仍然使用cUrl或其他来发送nonce。 2. cookie 是如何创建的?如果我使用 setcookie 它不起作用。谢谢。
    • Cookies 对于这个多服务器身份验证过程的初始设置将毫无用处。 CURL 连接将通过 server->server 完成。它根本不涉及客户端浏览器,因此服务器 A 无法将 cookie 从服务器 B 传输到客户端,以使其在服务器 B 上作为 cookie 工作。
    • +1 只是因为我学了一个新单词。 xP @jdeans:@alex 解决方案不需要 cookie 即可工作,将其视为通过 URL 传输的临时密码。
    • @Alix 你指的是nonce吗? @Cacha102 不久前给我看了。
    • 确实,保持知识流动的好方法。 =)
    猜你喜欢
    • 2021-03-28
    • 2011-01-01
    • 2016-03-06
    • 2011-10-09
    • 2023-03-29
    相关资源
    最近更新 更多