-3

我只是想知道是否可以将随机字符添加到我传递到第二页的变量中。我想要这个,因为如果用户更改了 url 中的值,那么系统就会搞砸,因为我正在根据消息 ID 将数据插入数据库。我不能使用会话,因为第一个会话覆盖了其他会话。

如果我有类似的东西,view_inbox.php?messageid=2那么用户可以将其更改为 something 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'];
4

1 回答 1

1

有几种方法。

  1. 您应该检查允许用户访问哪些行/实体的安全规则。将这些规则放在代码中的通用过程/函数中,以便您可以一致地检查它们。

  2. 您还可以“混淆”或加密 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;
}
于 2013-09-15T03:23:43.213 回答