昨天我问this question,但我没有得到答案,问题已被标记为重复,但事实并非如此。
我将“key”列名更改为“lic_key”和“keys”表名为“license_keys”,因为我知道它们是由MySQL保留的。
这是我的PHP代码:
<?php
require 'config.inc.php';
/* Connect to database and grab the keys */
@mysql_connect($g_mysql_host,$g_mysql_usr,$g_mysql_pass)
or die("Couldn't connect to database server");
@mysql_selectdb($g_mysql_db)
or die("Couldn't select database");
$key = mysql_real_escape_string($_GET["key"]);
$query = "SELECT * FROM `license_keys` WHERE `lic_key` = '$key'";
$result = mysql_query($query);
if ($result == "") exit("INVALID KEY");
else {
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
echo $row['id'];
}
}
?>
仅当密钥不包含“+”字符时才有效,并且它为搜索到的“license_key”输出特定的“id”。 如果密钥包含“+”或未找到,则页面保持空白(这是我遇到的另一个问题,因为脚本应输出“INVALID KEY”)。
使用Base64中的AES128加密密钥字符串。其他键有“+”字符,其他键不是。
不久,
kQcYqzQlsr4/MXJ1ySw7jQ== -- works.
CKVcua+aWlnK5qfKwcm6wA== -- does not work.
此脚本仅供个人使用,因此我不担心SQL注入。
感谢。
答案 0 :(得分:0)
感谢@Barmar澄清了URL中“+”字符的问题。 如果密钥不正确,要解决空白页面的问题,我编辑了
if ($result == "") exit("INVALID KEY");
与
if (mysql_num_rows($result)==0) exit("INVALID KEY");
现在可行。