由于撇号

时间:2018-11-07 16:00:44

标签: php sql

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

所以这里是

我的网站有很多输入字段,并且随之而来的是,我注意到如果用户使用',就会有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将'替换为\,但是如果用户使用\,它将被转换为',并非如此很好的解决方案。

1 个答案:

答案 0 :(得分:-2)

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

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

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

https://xkcd.com/327/