如何在用户页面上保护我的PHP cookie免受JavaScript的侵害?

时间:2011-08-17 04:44:54

标签: php javascript cookies login alert

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

我尝试创建正则表达式来清除用户页面中的document.cookie标签,但这不是好解决方案,因为用户可以放置:<script src="filejs.js"></script>并写入filejs.js,例如此代码{{1} },此代码将无法清除....

会话已保存,但长时间保存(alert(document.cookie);):(

谢谢。

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

在让用户在您的网页中加入JavaScript时,要确保安全是非常困难的。您将无法使用正则表达式实现此目的。您需要使用像Google's Caja project这样的重量级解决方案。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

即使您删除了所有HTML等,也无法阻止用户看到自己的Cookie。

他们需要的只是带有实时HTTP标头的Firefox。正如另一张海报所提到的那样 - 为什么当你给它们的时候把饼干弄出来?

答案 4 :(得分:0)

  

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

这样修复(例如,使用HTML清理程序,或使用非HTML的标记语言)。你所描述的不是一个功能 - 它是一个严重的安全漏洞 - 并且它不能通过调整你的会话来有效地涂抹。这相当于重新安排了泰坦尼克号上的躺椅。