我有一个脚本(由我编程),在这个脚本中,访问者可以注册和登录(用户信息存储在cookie中)...注册后他们可以编辑他们的个人页面..问题:这个页面接受javascript代码,任何人都可以使用document.cookie获取cookie:(
我尝试创建正则表达式来清除用户页面中的document.cookie标签,但这不是好解决方案,因为用户可以放置:<script src="filejs.js"></script>
并写入filejs.js,例如此代码{{1} },此代码将无法清除....
会话已保存,但长时间保存(alert(document.cookie);
):(
谢谢。
答案 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的标记语言)。你所描述的不是一个功能 - 它是一个严重的安全漏洞 - 并且它不能通过调整你的会话来有效地涂抹。这相当于重新安排了泰坦尼克号上的躺椅。