将随机字符添加到$ _GET变量

时间:2013-09-15 03:17:16

标签: php mysql get

我只是想知道是否可以将随机字符添加到我传递给第二页的变量中。我想要这个,因为如果用户更改了网址中的值,那么系统会搞砸,因为我根据消息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'];

1 个答案:

答案 0 :(得分:1)

有几种方法。

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

  2. 您也可以通过服务器可以反转的方式“混淆”或加密ID,但对于客户端来说并不容易/明显。操作可以包括乘以素数(比如23)模2 ^ 32,XOR乘以常数,输出它在base-64中,也许在前面用小写'x'。

  3. 对于第二种方法:

    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;
    }