gpt4 book ai didi

PHP——自动 SQL 注入(inject)保护?

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:41 25 4
gpt4 key购买 nike

我最近接管了一个 PHP 应用程序的维护工作,我对 PHP 不是很熟悉,但是我在网站上看到的一些东西让我感到紧张,因为它可能容易受到 SQL 注入(inject)攻击。

例如,看看这段登录管理部分的代码是如何工作的:

    $password = md5(HASH_SALT . $_POST['loginPass']);
$query = "SELECT * FROM `administrators` WHERE `active`='1' AND `email`='{$_POST['loginEmail']}' AND `password`='{$password}'";
$userInfo = db_fetch_array(db_query($query));

if($userInfo['id']) {
$_SESSION['adminLoggedIn'] = true;
// user is logged in, other junk happens here, not important

网站的创建者制作了一个特殊的 db_query 方法和 db_fetch_array 方法,如下所示:

function db_query($qstring,$print=0)        { return @mysql(DB_NAME,$qstring); }
function db_fetch_array($qhandle) { return @mysql_fetch_array($qhandle); }

现在,这让我觉得我应该能够使用电子邮件地址进行某种 SQL 注入(inject)攻击,例如:

' OR 'x'='x' LIMIT 1;

和一些随 secret 码。当我在命令行上使用它时,我得到了一个管理用户,但是当我在应用程序中尝试它时,我得到了一个无效的用户名/密码错误,这是我应该做的。

他们是否启用了某种全局 PHP 配置来阻止这些攻击?在哪里配置?

这是 PHP --version 信息:

# php --version
PHP 5.2.12 (cli) (built: Feb 28 2010 15:59:21)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with the ionCube PHP Loader v3.3.14, Copyright (c) 2002-2010, by ionCube Ltd., and
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

最佳答案

我的猜测是您通过应用程序的尝试被 magic quotes 阻挠了.

然而,依赖于此是非常糟糕的做法,该应用确实应该有更多自己的验证和转义。

关于PHP——自动 SQL 注入(inject)保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com