如何防止Javascript访问PHP cookie数据?

时间:2011-04-19 06:02:46

标签: php javascript cookies

(取自求职面试)

以下哪个答案是正确的?

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

4 个答案:

答案 0 :(得分:6)

设置Cookie标头后,您可以指定httpOnly

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

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

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

答案 1 :(得分:4)

正确答案是第一个:

Use the httponly parameter when setting the cookie

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

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

答案 2 :(得分:1)

一个cookie是客户端.....?

用户必须关闭Javascript支持 - 积极的

在设置cookie时使用httponly参数 - 可能是正确的答案,但正如之前所回答的那样..我认为有解决办法

答案 3 :(得分:1)

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

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

  1. 用于将会话ID保留在浏览器中的Cookie
  2. 与setcookie一起发送的cookie
  3. 我打赌问题1.我理解正确的问题应该是:

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

    然后,答案是:

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