我只是想知道是否可以将随机字符添加到我传递给第二页的变量中。我想要这个,因为如果用户更改了网址中的值,那么系统会搞砸,因为我根据消息ID将数据插入数据库。我不能使用会话,因为第一个会话会覆盖其他会话。
如果我有类似view_inbox.php?messageid=2
的内容,则用户可以将其更改为view_inbox.php?message=4
。
因此可能会有一些像
这样的随机字符 view_inbox.php?messageid=GXLSsd2sdcds
? id来自数据库。
echo"<a href='view_inbox.php?messageid=".$row['id']."'>".$row['from_user']."</a>";
view_inbox.php
$id = $_GET['messageid'];
答案 0 :(得分:1)
有几种方法。
您应该检查允许用户访问哪些行/实体的安全规则。将这些规则放在代码中的通用过程/函数中,以便您可以一致地检查它们。
您也可以通过服务器可以反转的方式“混淆”或加密ID,但对于客户端来说并不容易/明显。操作可以包括乘以素数(比如23)模2 ^ 32,XOR乘以常数,输出它在base-64中,也许在前面用小写'x'。
对于第二种方法:
function encodeKey ($key) {
$multiplied = $key * 23;
$packed = pack( "N", $multiplied);
$base64 = base64_encode( $packed);
return $base64;
}
function decodeKey ($text) {
$packed = base64_decode( $text);
// then unpack, divide etc.
return $key;
}