$sql = "select * from users where username = '$username' and password = '$password'";
对于这种sql,对应一个万能密码和用户名:php
$sql = select * from users where username = '$username' and password = ' xx' or 1='1'
不解释,瞬间破解mysql
一样,上面是在sql语句中查询字段后的输入值加了单引号,有些时候尤为是初级程序员常常对变量不加单引号:程序员
$sql = "select * from users where username = $username and password = $password";
这时mysql解释会被当作数字型字段来匹配sql
select * from users where username = 11 union select * from users/* and password = 54
$keyword = addslashes($keyword); $keword = str_replace("%","\$",$kwyword);
insert into users(username,password,grade) values('frank','123456','1');
insert into users(username,password,grade) values('frank','123456','3')/*,'1';
$sql = "select * from users where username=? and password=?"; //建立一个pdo对象 $mypdo = new PDO("mysql:host=localhost;port=3306;dbname=xx","root","123456"); //设置编码 $mypdo->exec("set names utf8"); //预处理$sql $pdostatement = $mypdo->prepare(%sql); //将用户名和密码填入sql $pdostatement->execute(array($username,$password)); //获得查询结果 $result = $pdostatement->fetch(); if(empty($result)) ...