-2

我一直在开发一个网站,从一开始我就一直在思考如何解决这个问题。

所以这里是:

我的网站有很多输入字段,因此,我注意到如果用户'使用SQL error. 我已经搜索了类似的问题,但我没有找到任何问题,但我相信我可能正在寻找错误的方法。

这就是我执行查询的方式:

我为我的查询创建了一个函数:

function query($sql) {  
    $stmt = $conn->prepare($sql);
    $stmt->execute();
}

然后我像这样使用它:

$sql = "INSERT INTO users(fname,lname,username) VALUES('$fname','$lname','$username')";
$stmt = $dbconn->query($sql); // $dbconn is the variable of my db connection class

我考虑过使用 str_replace 将 a 替换为'\但是如果用户使用\它,那么它将被转换为 a ',这并不是一个很好的解决方案。

4

1 回答 1

-2

使用存储过程并将数据作为参数传递。

此外,仅将数据库中的“执行”权限授予您的网站登录的用户。

这将防止黑客运行任何不在您的存储过程中的数据库查询/更新,还将防止 SQL 注入攻击并提高性能。

https://xkcd.com/327/

于 2018-11-07T16:11:27.950 回答