我如何保护我的PHP cookie从JavaScript用户的页面


How can I protect my PHP cookies from JavaScript on user's pages?

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

我尝试创建正则表达式来清理文档。cookie标签从用户页面,但这不是很好的解决方案,因为用户可以把:<script src="filejs.js"></script>和写在filejs.js中,例如这段代码alert(document.cookie);,这段代码不会发现清理....

会话保存,但不保存很长时间(time()+60*24*300):(

谢谢。

为什么要阻止用户看到他们自己的cookie?他们已经可以了,cookies就存储在他们的电脑里。

如果你想防止别人把脚本放入你的页面,使用strip_tags从输入中删除HTML,或者使用htmlspecialchars将其显示为纯文本。

让用户在你的页面中包含JavaScript是很难保证安全的。您将无法单独使用正则表达式实现这一点。你需要使用一个重量级的解决方案,比如谷歌的Caja项目。

撇开其他安全问题不谈,你可以通过使用HttpOnly标志来保护你的cookie不受JavaScript的攻击。您可以在PHP中通过将$httponly参数的真值传递给setcookie()来使用它。

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

你不能阻止用户看到他们自己的cookie -即使你删除了所有的HTML等。

他们所需要的只是带有实时http标头的Firefox。正如另一张海报所提到的——既然给了他们饼干,为什么还要把饼干从他们身上撕下来呢?

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

所以修复它(例如,通过使用HTML杀毒器,或者通过使用非HTML的标记语言)。你所描述的并不是一个特性——而是一个严重的安全漏洞——并且它不能通过调整你的会话来有效地掩盖。这相当于重新安排泰坦尼克号甲板上的椅子。