Mysql SQL注入方法Post

Mysql SQL注入方法Post,mysql,post,sql-injection,Mysql,Post,Sql Injection,是否可以在不使用任何表单的情况下使用SQL注入发送POST请求?假设应用程序使用带有id参数的GET方法来检查数据库是否存在该id,那么如果改用POST方法,可以吗?SQL注入可以通过用户数据直接在查询中结束的任何机制进行。它不依赖于GET和POST,甚至不依赖于HTTP 您可以使用SQL注入。您可以使用SQL注入。只要有人不小心并且没有正确地转义数据,您就可以随时进行SQL注入 这就是为什么在所有查询中使用带有占位符值的准备语句非常重要。为什么GET和POST数据的安全性会有任何区别 $sql

是否可以在不使用任何表单的情况下使用SQL注入发送POST请求?假设应用程序使用带有id参数的GET方法来检查数据库是否存在该id,那么如果改用POST方法,可以吗?

SQL注入可以通过用户数据直接在查询中结束的任何机制进行。它不依赖于GET和POST,甚至不依赖于HTTP

您可以使用SQL注入。您可以使用SQL注入。只要有人不小心并且没有正确地转义数据,您就可以随时进行SQL注入


这就是为什么在所有查询中使用带有占位符值的准备语句非常重要。

为什么GET和POST数据的安全性会有任何区别

$sql = "SELECT * FROM products WHERE id = {$_GET['id']}";
vs

在这两种情况下,都是不可信的内容,在SQL查询中插入这些内容是不安全的

使用查询参数。那么你就不必担心数据来自哪里了

$sql = "SELECT * FROM products WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute( [ $_POST['id'] ] );

使用查询参数既简单又安全

对。SQL注入与HTTP谓词无关。@假设我们有这个链接www.shop.com/products.php?id=2。。此页面显示具有该id的产品,sql请求将是SELECT*FROM products,其中id=$\u GET['id']。如果我们更改$\u GET by$\u POST,并且请求是在不使用任何形式的情况下提出的,我该怎么做?你该怎么做?如何将代码更改为使用POST而不是GET?好吧,你可以通过改变你的代码来做到这一点,可能有多种方式。现在还不清楚你在问什么,或者这些问题与SQL注入有什么关系,我强烈怀疑你试图问的问题是基于对当前主题的一些基本误解。是的,你甚至可以使用刚从自己的数据库中获取的数据进行SQL注入!类似地,您可以使用AJAX、浏览器开发工具、Curl、telnet或几乎任何具有网络功能的语言编写的脚本发送POST请求。
$sql = "SELECT * FROM products WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute( [ $_POST['id'] ] );