禁止通過字元串連結拼接sql語句,極容易出現注入漏洞
錯誤的寫法:
$sql = "select * from table where id='".$id."'"; $sql = "INSERT INTO fruit(name, colour) VALUES ('".$name."', '".$colour."')";
$sql = "select * from table where id=".$id; 這種寫法如果id沒有做檢查可以100%注入成功
正確的寫法
$sql = "select * from table where id=?"; $sql = "INSERT INTO fruit(name, colour) VALUES (?, ?)";
使用“?”優勢不便於我們排查調試有可能你傳入的數字不對稱,我們建議使用bindParam() 和 bindValue()
$sql = "select * from table where id = :id"; $sql = "INSERT INTO fruit(name, colour) VALUES (:name, :colour)";
禁止使用 * 例如:
select * from member;
查詢記錄是否存在
select count(id) from member where username = :username