在我的登录表单中,我在执行查询之前使用用户名和密码
......上课......
private $username;
private $password;
protected function Login(){
$user = hash('sha256', $this->username);
$pass = hash('sha256', $this->password);
$this query = "..."
...
}
以其他形式(如搜索表单)我将字符串转换为数组,然后执行查询,这样查询将如下所示:
$searchstring = explode(' ', $search);
//.... Some lines of PHP code... and the resulting query is: ...
$this->query = "SELECT... WHERE name LIKE 'DELETE%' OR name LIKE 'FROM%' ";
$this->query.= " OR name LIKE 'USERS%' OR name LIKE 'WHERE%' OR name LIKE '1%'";
这足以阻止sql注入吗?感谢
答案 0 :(得分:5)
不要相信自己的能力来阻止SQL注入!许多比你更好的人已经陷入困境。
使用mysqli或PDO和参数化查询。这样做的另一个好处是允许数据库缓存查询计划。
答案 1 :(得分:0)
您可以采取一些非常简单的步骤来提高代码的安全性:
$query= mysqli_real_escape_string($database_connection, $user)
这会逃避任何可能对SQL字符串产生负面影响的危险字符
$query = mysqli_real_escape_string($database_connection, trim($user))
在这一步中,我们添加了trim函数,它取出了任何白色空格 - 用于启动SQL注入攻击
您可以详细了解此here
答案 2 :(得分:0)
或者您可以将其转换为二进制文件:
function mssql_escape($data) {
if(is_numeric($data))
return $data;
$unpacked = unpack('H*hex', $data);
return '0x' . $unpacked['hex'];
}
...如果你不在mysql
db。