2017-08-16 77 views
-2

我一直在考虑一个项目来完成,在后端有SQL语句做各种事情,如你所期望的。这是查询容易受到SQL注入攻击

在我使用PDO来构造使用参数化,以避免注入攻击SQL查询过去。

虽然通过读码我注意到的形式很多疑问:

$sql = "SELECT * FROM detail WHERE email ='$email'"; 
$query = mysqli_query($dbcon, $sql); 

在没有参数设置或输入的清洁。

是这种类型的查询脆弱的,应该不存在某种形式的参数化,更重要的是我应该解释所涉及,因为它似乎开发商不知道风险的风险。

+1

*是这种类型的查询弱势*是, *应该没有某种形式的参数化?*是的。但是你可以用mysqli实现它。你不能更改为PDO – Jens

+0

可以达到你想要的mysqli什么,但恕我直言,PDO是更容易使用比'MySQLi_ *' – GrumpyCrouton

+0

你的代码中有'mysqli'连接和'PDO'连接? – chris85

回答

2

是的,

但是你可以用这个用的mysqli:http://php.net/manual/en/mysqli.prepare.php

所以你的数据就会像:

$prepare = $dbcon->prepare("SELECT * FROM detail WHERE email = ?"); 
$prepare->bind_param("s", $email); 
$prepare->execute(); 
+1

理论上是正确的,但只有链接的答案并不特别好,并且使用法文引用这个东西应该改为与该链接的英文等同。应该在答案中包含一个最简单的例子。 –

+0

是的,刚编辑我的答案 – WebFreak

+0

看起来不错,*欢呼* –