即使使用mysql_real_escape_string()函数,也有SQL注入的可能性吗?

考虑这个样本情况.SQL在PHP中的构造如下:

$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";

我听到很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()个函数,也有可能被破解.但我想不出任何可能的利用?

像这样的classic 注射:

aaa' OR 1=1 --

不要工作.

您知道有什么可能的注入可以通过上面的PHP代码吗?

推荐答案

考虑下面的查询:

$iId = mysql_real_escape_string("1 OR 1=1");    
$sSql = "SELECT * FROM table WHERE id = $iId";

mysql_real_escape_string()不会保护你免受这种伤害.

$iId = (int)"1 OR 1=1";
$sSql = "SELECT * FROM table WHERE id = $iId";

Php相关问答推荐

PHP Mail到Googlmail.仅SPF

仅显示特定WooCommerce产品类别的额外产品字段

管理员订单列表中的自定义列与WooCommerce 8.6.1一起消失

照明\Support\Collection::Filter():参数#1($Callback)的类型必须为?可调用、已给定数组、已调用

在没有symfony应用程序的情况下使用安全Bundle 包时,缺少配置构建器类

如何将隐式乘法添加到PHPPEG基本计算器语法中?

将客户重定向到自定义感谢页后的空白页

有没有可能从composer 过时的输出中隐藏不需要的主要版本?

基于服务器的不同地平线配置

fpm-php + nginx + POST数据

Laravel 10中的Validator类

未定义的类型';PDF';在Laravel 8

调用模型[App\Models\Employee]上未定义的关系[title]

laravel Eloquent 模型的问题

API 平台 - UI 服务器端点定义

Woocommerce 相关产品按其类别或排名数学主要类别

根据所选付款方式更改 WooCommerce 提交结帐按钮文本

如何从 PHP 中的 .txt 文件中列出今天生日的人的姓名?

如何修复正则表达式以在换行符后查找非数值

PHP删除具有相同键的项目,除了具有最低值的项目