//示例代码 //使用mysqli进行查询操作 $conn = new mysqli($servername, $username, $password, $dbname); $sql = "SELECT * FROM users WHERE username = '" . $_POST["username"] . "' AND password = '" . $_POST["password"] . "'"; $result = $conn->query($sql);
上面的代码中,可以看到程序通过用户提交的表单数据进行SQL查询操作。但是,如果攻击者在提交表单时携带恶意代码,就可以绕过程序的过滤校验,向数据库中插入可执行代码,从而造成MySQL注入攻击。
防止MySQL注入攻击的方法包括:
//使用预编译语句进行查询操作 $stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $_POST["username"], $_POST["password"]); $stmt->execute(); $result = $stmt->get_result();
使用预编译语句可以有效防止恶意代码注入。另外,还可以对提交的数据进行过滤校验和大小写转换等操作,提高程序的安全性。