【问题标题】:How can Javascript be prevented from accessing PHP cookie data?如何防止 Javascript 访问 PHP cookie 数据?
【发布时间】:2011-08-08 09:45:30
【问题描述】:

(取自工作面试)

下列哪个答案是正确的?

  • 设置cookie时使用httponly参数
  • 用户必须关闭 Javascript 支持
  • 这是浏览器中的 cookie 设置
  • 只有发布域可以访问 cookie
  • 一个在客户端,另一个在服务器上,所以这不是问题

【问题讨论】:

标签: php javascript cookies


【解决方案1】:

设置cookie头时,可以指定httpOnly

这可以通过 PHP 的 setcookie 函数来完成:

setcookie ( $name, $value, $expire, $path, $domain, $secure, $httponly )

httpOnly 指示浏览器不允许 JS 访问 cookie。

【讨论】:

    【解决方案2】:

    正确答案是第一个:

    Use the httponly parameter when setting the cookie
    

    此标志阻止(在兼容的浏览器上,几乎所有,包括 IE >= 6sp1)浏览器上的 javascript 引擎使用此参数访问 cookie。您可以使用 setcookie 为常规 cookie 设置此标志,使用 session_set_cookie_params 为会话 cookie 设置此标志。

    已编辑:支持 IE >= 6sp1 而不是 IE >= 7

    【讨论】:

    【解决方案3】:

    cookie 是客户端.....?

    用户必须关闭 Javascript 支持 - 激进

    在设置 cookie 时使用 httponly 参数 - 可能是正确的答案,但正如之前回答的那样。我想有一些变通方法

    【讨论】:

      【解决方案4】:

      Cookie 是一个 HTTP 概念,而不是 PHP 概念。 PHP 可以创建和修改 cookie,但没有“PHP COOKIE”之类的东西。浏览器不关心响应是由 PHP、Python 还是 perl cgi 生成的。

      试图找出真正的问题,可能性是:

      1. 在浏览器中保存会话 ID 的 cookie
      2. 使用 setcookie 发送的 cookie

      我为问题 1 打赌。我知道正确的问题应该是:

      “为什么客户端使用javascript或其他任何方法,它无法查看或修改存储在PHP会话中的信息?”

      那么,答案是:

      “因为,即使 PHP 会话使用 cookie,此 cookie 也仅用于存储会话 id,而不是会话的内容。会话的内容存储在服务器上,而不是 cookie 本身。”

      【讨论】:

        猜你喜欢
        • 2012-09-16
        • 1970-01-01
        • 2015-06-08
        • 2013-06-06
        • 2012-05-22
        • 2015-07-12
        • 2013-11-06
        • 1970-01-01
        • 2010-11-05
        相关资源
        最近更新 更多