php - 使用 PHP 在 MySQL 表中搜索 Base64 字符串

标签 php mysql base64

我问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'];
        }
    }

?>

仅当 key 不包含“+”字符时才有效,并且它会输出搜索到的“license_key”的特定“id”。 如果 key 包含“+”或未找到,则页面保持空白(这是我遇到的另一个问题,因为脚本应该输出“INVALID KEY”)。

key 字符串使用 Base64 中的 AES128 进行加密。其他键有“+”字符,其他键没有。

很快,

kQcYqzQlsr4/MXJ1ySw7jQ==  -- works. 

CKVcua+aWlnK5qfKwcm6wA== -- does not work.

这个脚本仅供个人使用,所以我并不害怕SQL注入(inject)。

谢谢。

最佳答案

感谢@Barmar 澄清了 URL 中“+”字符的问题。 为了解决 key 不正确时出现空白页的问题,我编辑了

if ($result == "") exit("INVALID KEY");

if (mysql_num_rows($result)==0) exit("INVALID KEY");

现在它可以工作了。

关于php - 使用 PHP 在 MySQL 表中搜索 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697754/

相关文章:

java - Java中的调用方法

c++ - Poco::Base64Decoder 流不返回完整的字符串

html - 如何在 html 页面中使用数据 url 显示图像

php - 只保存10条记录,但按ID删除所有其他记录 庞大的数据库

php - 在 php 中生成缩略图,发布到 Azure 计算机视觉 API

mysql - 在某些条件下将行转换为列

email - 将使用内容传输编码 : base64 for text and html email present any issues?

php - 单击提交按钮或搜索按钮后,在 URL 中动态获取国家/地区 ID

javascript - 如何在 PHP (wordpress) 中创建可过滤的投资组合?

mysql - 在 servlet 中使用 JDBC