gpt4 book ai didi

php - SELECT PDO 准备语句中的 SELECT

转载 作者:可可西里 更新时间:2023-11-01 06:47:47 25 4
gpt4 key购买 nike

<分区>

我在想一个这样的例子:

请求通过一个参数到达一个位于 url 的页面(通过任何方式)。 example.com/api/page?name=bob。据我了解,您应该做一个准备好的语句来获取 $_POST[name] 参数并确保它不是任何奇怪的东西,但它是通过计算表达式来实现的。

我的第一个问题是:它是如何做到的(计算表达式)?

我的第二个问题是:如果用户输入类似于“SELECT * FROM users”或“DROP TABLE users”的内容并传递给 $_POST['name'] 参数(?name= bob 在最后),在那种情况下会发生什么?

举个例子,最终的查询应该是这样的

SELECT name, continent FROM world
WHERE continent IN
(SELECT continent FROM world WHERE name='Brazil')

第二个选择作为用户输入参数 - 所以 $_POST['name'] 包含这个查询 SELECT continent FROM world WHERE name='Brazil'

最后,我要问的第三个问题是,我该如何防范此类事件?

我猜 PDO 是专门为防止在 query(?) 中进行查询而设计的,但是在阅读了一下之后我仍然很困惑。

我仍在学习所有这些,所以如果我的询问不够清楚或不够具体,请告诉我,我会尽力解决。

编辑:为了消除任何混淆,我正在做的是:

$pdo = new PDO('..');
$sql = 'SELECT id FROM users WHERE username = :username';
$statement = $pdo->prepare($sql);
$statement->bindParam(':username', $_POST['username']);

问题是,如果 $_POST['username'] 包含 'SELECT * FROM users'(或任何其他查询)怎么办?prepare() 是如何工作的?我所描述的实际上是否存在安全漏洞?我需要一些帮助来理解这一点。

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