我有一个脚本,它接受数组来对它们进行随机播放,然后将它们存储到cookie中,这样用户只能将数据洗牌一次。
这是脚本:
$shufflecookie = $_COOKIE['shuffle'];
if (isset($_COOKIE['shuffle'])) {
$items = unserialize(gzuncompress(base64_decode($shufflecookie)));
}
else {
shuffle($items);
$items_serialized = base64_encode(gzcompress(serialize($items)));
setcookie("shuffle", $items_serialized, 0, "/");
}
这样做是否安全?或者可能有更好的方法来存储这些数据?感谢
UPD。谢谢你的帮助。我所做的只是用会话替换cookie。所以新代码是:
$shufflecookie = $_SESSION["shuffle"];
if (isset($_SESSION["shuffle"])) {
$items = unserialize(gzuncompress(base64_decode($shufflecookie)));
}
else {
shuffle($items);
$items_serialized = base64_encode(gzcompress(serialize($items)));
$_SESSION["shuffle"] = $items_serialized;
}
答案 0 :(得分:0)
自问问题后,您似乎已用次要答案更新了问题。
在cookie中存储数据的一个缺点是它以明文形式存储在客户端PC上(除非首先加密服务器端)。即使您对数据进行加密,用户也总是可以设法解密数据。取决于cookie的生存时间,cookie也有可能在浏览器的生命周期之后存活(即关闭后)。这引入了这样一种可能性,即客户端可能不会更改cookie中的数据,然后在稍后的页面请求中将其发送回服务器。
另一方面,将信息存储在会话中有助于确保信息存储在服务器端,并阻止客户端查看此信息。通常在使用会话时,您只需将会话ID存储在cookie中,以识别用户所属的会话。
因此,任何应该安全的数据都应该保存在会话中而不是cookie中。