Kullanmak için tavsiye serialize()
iyi. Alan bir sorun varsa, o zaman bzcompress()
ve serialize()
bir arada kullanın.
Ancak, o kadar getirilmiş değil düşünen bir güvenlik var, o da son kullanıcı (kim bu url görebilir ve düzenleyebilirsiniz) içindeki verileri manipüle olabilir bu. Bunu zor olduğunu düşünüyorum, ama vahşi PHP-saldıran solucanlar çoğu bazı lisans veya başka bunu.
Kullanıcı doğrudan any tuşları veya değerler (veya bir tamsayı, ya da bir nesne, ya da başka bir şey ile değiştirilmesi) işlemek izin varsa, o zaman bu saldırıdan komut (ve kullanıcıların) korumak gerekir.
Basit bir çözüm sadece paylaşılan bir sır kullanmaktır. Bu herhangi bir şey olabilir; sadece çok uzun benzersiz ve gerçekten sır olarak (belki de rastgele kurulum süresi de bunu oluşturmak gerekir). Diyelim ki, bu gibi yapılandırma dosyası bir şey var diyelim:
define('SECRET', 'unoqetbioqtnioqrntbioqt');
Ardından, dijital ile oluşturulan seri hale verileri oturum açabilirsiniz: $s=serialize($m)
ile $k=sha1($s.SECRET)
ve url değeri yapmak $k.$s
Ardından, önce unserialize()
bunu:
$v=substr($input,0,40);
$s=substr($input,40);
if ($v != sha1($s.SECRET)) { die("invalid input"); }
$m=unserialize($s);
Bu şekilde, $m
Eğer tefrika özgün değeri olarak aynı olduğunu biliyoruz.
Eğer isterseniz, aşağıdaki-düşüş değiştirmeler kullanabilirsiniz:
define('SECRET','buh9tnb1094tib014'); // make sure you pick something else
function secureserialize($o) {
$s=serialize($o);
return sha1($s.SECRET).$s;
}
function secureunserialize($i) {
$v=substr($i,0,40);$s=substr($i,40);
if ($v!=sha1($s.SECRET)){die("invalid input");}
return unserialize($s);
}