gpt4 book ai didi

php - ADOdb 中的 SQL 注入(inject)和一般网站安全

转载 作者:IT王子 更新时间:2023-10-28 23:48:58 27 4
gpt4 key购买 nike

我读了很多书,但仍然不能 100% 理解某些 SQL 注入(inject)是如何发生的!

我想从知道的人那里看到基于我的示例的 SQL 注入(inject)的具体示例,以便可以复制、测试和修复它。我已经尝试 SQL 注入(inject)我的代码但不能,所以我希望有人能证明我不是这样!

1.SQL 注入(inject)只能通过 POST 或 GET 方法发生,我说得对吗,这意味着在网站上它应该是 post 表单,例如“注册或搜索”或类似“search.php?tags=love”的查询?

说这样可以注入(inject)下面有POST方法的代码吗?

$name     = trim($_POST['username']);
$mail = trim($_POST['email']);
$password = trim($_POST['password ']);

if ($errors == "false") {
$sql =
"INSERT INTO
clients
SET
name='" . mysql_real_escape_string($name) . "',
mail='" . mysql_real_escape_string($mail) . "',
password='" . mysql_real_escape_string(sha1($password)) . "'";
$connection->execute($sql);

}

2.另一个有GET方法:rate.php?like&videoID=250&userID=30

$sql = 
"SELECT
videoID
FROM
likes
WHERE
videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1";
$connection->execute($sql);

请帮助那些对这个主题感到自由但使用具体例子的人。

提前致谢,
伊利亚

最佳答案

SQL 注入(inject)攻击发生在用户输入 编码不正确时。通常,用户输入是用户通过查询发送的一些数据,即 $_GET$_POST$_COOKIE$_REQUEST$_SERVER 数组。但是,用户输入也可以来自各种其他来源,例如套接字、远程网站、文件等。因此,您应该真正处理除常量之外的所有内容(例如 'foobar') 作为用户输入

在您发布的代码中,mysql_real_escape_string用于编码(=转义)用户输入。因此该代码是正确的,即不允许任何 SQL 注入(inject)攻击。

请注意,很容易忘记对 mysql_real_escape_string 的调用 - 对于熟练的攻击者来说,一次就足够了!因此,您可能希望使用现代 PDOprepared statements而不是 adodb。

关于php - ADOdb 中的 SQL 注入(inject)和一般网站安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939226/

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