我觉得这段代码容易受到攻击。原因可能是什么?

时间:2014-03-13 23:22:10

标签: mysql sql pdo mysqli code-injection

if (isset($_POST['Login'])){

$UserName=$_POST['UserName'];
$Password=$_POST['Password'];

$login_query=mysqli_query($GLOBALS["___mysqli_ston"],"select * from voters where Username='$UserName' and Password='$Password' and Status='Unvoted' and Year='1st year'") or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));

2 个答案:

答案 0 :(得分:2)

您应该考虑使用Prepared Statements,而不是直接连接您输入的结果。否则你很容易受到SQL Injection

的攻击

答案 1 :(得分:0)

任何时候您使用用户提交的变量并且不会对其进行保护,您就会变得脆弱。

正如流氓所说,你可以使用预备语句,或使用某些版本的引用,例如pdo&#; s:

$password = $db->quote($password);