【问题标题】:How can I protect my PHP cookies from JavaScript on user's pages?如何保护我的 PHP cookie 免受用户页面上的 JavaScript 影响?
【发布时间】:2011-08-17 13:56:46
【问题描述】:

我有一个脚本(由我编写),在这个脚本中,访问者可以注册和登录(用户信息存储在cookies中)...注册后他们可以编辑他们的个人页面..问题:这个页面接受javascript 代码,任何人都可以使用 document.cookie 获取 cookie :(

我尝试创建正则表达式以从用户页面清除 document.cookie 标记,但这不是好的解决方案,因为用户可以输入:<script src="filejs.js"></script> 并在 filejs.js 中写入例如此代码 alert(document.cookie);,此代码找不到清理....

会话已保存但长时间未保存(time()+60*24*300) :(

谢谢。

【问题讨论】:

    标签: php javascript cookies login alert


    【解决方案1】:

    您为什么要阻止用户看到他们自己的 cookie?他们已经可以了,cookie 存储在他们的计算机上。

    如果您想阻止某人将脚本放入您的页面,请使用 strip_tags 从输入中删除 HTML,或使用 htmlspecialchars 将其显示为纯文本。

    【讨论】:

    【解决方案2】:

    让用户在您的页面中包含 JavaScript 时很难保证安全。您将无法使用正则表达式自己实现此目的。你需要使用像Google's Caja project 这样的重量级解决方案。

    除了其他安全问题,您可以保护您的 cookie 免受 JavaScript by using the HttpOnly flag 的影响。你可以通过passing setcookie() a true value for the $httponly argument在PHP中使用它。

    【讨论】:

    • 如果我设置 httponly = true ,用户无法使用 javascript 获取 cookie ??
    • @Davidcoder:没错,但仅在较新的浏览器中,它在较旧的浏览器中不起作用。如果没有像 Caja 这样的东西,除了窃取 cookie 之外,还有其他方法可以入侵您的网站。
    • 好的,我将使用会话仅保存密码和 cookie 以保存用户名并将会话生命周期编辑为一小时 $_COOKIE["username"] $_SESSION["password"] 是否保存?跨度>
    • @Davidcoder:可能不会。当您让用户在您的网站上运行 JavaScript 时,可能会发生大量不同的 XSS 攻击。详细信息取决于您的网站。
    • 有些网站给piczo.com这样的页面...你可以使用javascript,但没有问题..请帮助meee :(
    【解决方案3】:

    防止 javascript 访问 cookie 的最佳方法是在 cookie 上设置 HttpOnly 标志。在 PHP 中,这可以使用 session.cookie-httponly ini 指令应用于会话 cookie。如果您使用setcookie() 设置cookie,则可以将可选的$httponly 参数设置为TRUE

    【讨论】:

      【解决方案4】:

      您无法阻止用户查看他们自己的 cookie - 即使您删除了所有 HTML 等。

      他们只需要带有实时 http 标头的 Firefox。正如另一位海报所提到的 - 为什么在你给他们饼干的时候把它从他们身上切下来?

      【讨论】:

        【解决方案5】:

        注册后,他们可以编辑他们的个人页面.. 问题:此页面接受 javascript 代码...

        所以修复它(例如,通过使用 HTML sanitizer,或通过使用不是 HTML 的标记语言)。你所描述的不是一个特性——它是一个严重的安全漏洞——它不能通过调整你的会话来有效地掩盖。这相当于重新布置泰坦尼克号上的躺椅。

        【讨论】:

          猜你喜欢
          • 2021-11-18
          • 2014-04-01
          • 1970-01-01
          • 2015-10-26
          • 2015-11-19
          • 1970-01-01
          • 1970-01-01
          • 2018-07-24
          • 2015-12-20
          相关资源
          最近更新 更多