以加密形式解析URL中的id以防止sql注入

时间:2013-07-05 13:11:17

标签: parsing url encryption

抢我的头发来解决这个问题,但我不能。

我正在解析url中的id以根据该id在下一页上提取数据。因此,我不是解析id=123,而是像process.php?token=TG4n6iv_aoO7sU3AngFY4WLSppLvueEoh-MnYE6k7NA那样加密它,并在使用$_GET收集它之前在process.php页面上解密它,然后在sql查询中使用它。这不是正确的URL,我需要像process.php?token=9878799889这样的网址,我需要在process.php上解密这个9878799889,它会给我原来的用户ID。

所以在这里我不能使用md5或base64_encode给我带来难看的字符串。 这里最好的事情是什么? id是唯一的,因此生成的长数字也应该是唯一的,并且不容易猜测。 现在我正在使用盐加密对数。实际上想要解析像www.sitename.com/process/token/9878799889 ..这可以通过.htaccess来实现,所以不用担心它..

任何帮助将不胜感激..

1 个答案:

答案 0 :(得分:0)

您可以做的是在数据库中添加一个关联表,其中包含一个UUID作为主键(一个随机生成的数字)和您的真实ID引用
(以及您可能想要存储的其他信息,喜欢"有效直到"日期或其他事情......)

在解析UUID时,您必须在该表中生成条目 让我们说INSERT INTO uuid_table (uuid, real_id) VALUES (9878799889, 123);
现在当你处理网址process.php?token=9878799889时 你只需要SELECT real_id FROM uuid_table WHERE uuid=9878799889;
它将重新读取读取标识123

您完成后还应DELETE FROM uuid_table WHERE uuid=9878799889

请注意,它也适用于md5或base_64,但实际上它会使url更加丑陋。