mysqli 注入可以影响 php 脚本吗

can a mysqli injection affect the php script

所以我已经完成了数据库的创建,我使用php向其中插入数据,我一直在尝试进行SQL注入攻击和其他事情来查看我是否安全,但是因为我不是专家,所以我希望检查我所做的是否安全以及正确的方法。

我有这个(names/variables 已修改)表单,当按下提交按钮时,函数 insert() 运行

<form action="" method="POST">
  var1: <input type="text" name="var1"><br>
  var2: <input type="text" name="var2"><br>
 <input type="submit" value="Submit">
</form>

<php?
function insert() {
$connect = mysqli_connect("localhost","user","user","table");
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
mysqli_query($connect, "INSERT INTO column_name (var1, var2) VALUES ( '$var1','$var2'); ");
}
?>

而且我似乎无法使用此

注入具有 var1 和 var2 的表单
$var2 = '): DROP TABLE test --and several variants of this

环顾四周,我发现 mysqli_query 将只接受一个查询,这就是它不起作用的原因。 如有错误请指正

我的另一个想法影响了 PHP 脚本,即 运行, 通过使用 this

注入表单
$var2 = "'); "); mysqli_query($connect,"DROP TABLE test");//

问题:这种事情会发生吗?你可以在运行时通过 $post 方法影响 PHP 函数?我环顾四周,找不到任何东西。是因为不能吗?

如果我的要求很明显,我可以查看任何研究论文、文章等以提供帮助,我们将不胜感激:)

编辑:我将添加准备好的语句以确保安全

SQL 注入使用像 union to run multiple queries at once at vulnerable place. Your form IS vulnerable, because you are either not using any sort of escaping, nor prepared statements. What if your $var2 would contain for example hi')? That would escape the brackets and open a vulnerability. Also if you just $_POST['value'] and insert it directly in database, it opens XSS vulnerability.

这样的命令

您不应该通过试图弄清楚如何利用您到处留下的数百个潜在安全漏洞来证明您的网站免受 SQL 注入。

如果您想确保您的站点安全,只需采取适用的安全措施,例如使用准备好的语句。

如果您想确保您的网站安全,我建议您:

首先,使用准备语句:

 $mysqli->prepare("SELECT Distinct FROM City WHERE Name=?");
 $stmt->bind_param("s", $city);
 $stmt->execute();

二、使用filter_input方法,例如:

filter_input(INPUT_POST,'email',FILTER_EMAIL);