1.sql攻击是什么?就是输入参数未经过滤然后直接拼接到sql语句中解析执行然后达到预想之外的的一种行为 例如where id=-1 or 1=1;这种情况下 where条件永远为真
2.如何寻找sql注入?
不直接拼接客户端发来的参数
----1.数字注入
----2.字符串注入(重点)sql语句的注释 '# 这样就可以做到 #后面的语句全部失效 '--等等
3.如和预防sql注入
----1.整数的非空校验
----2.可以利用前台的表单要求 而 利用正则表达式 来做校验
----3.特殊字符的转义(php的函数addslashes htmlspecialchars 严格检查输入的类型以及格式)
----4.预编译(预编译是根本上解决sql注入的方法。)bind_param()函数
<?php
//创建连接
$mysqli=new mysqli("localhost","root","","test");
//设置mysqli编码
mysqli_query($mysqli,"SET NAMES utf8");
//检查连接是否被创建
if (mysqli_connect_errno()) {
printf("Connect failed:".mysqli_connect_error());
exit();
}
//创建准备语句
$stmt = $mysqli->prepare("select id,username from user
where id
> ?");
/*****/
$id=5;
//绑定参数
$stmt->bind_param("i",$id);
//绑定结果集
$stmt->bind_result($id,$username);
//执行查询
$stmt->execute();
//显示绑定结果的变量
while($stmt->fetch()){
echo "第".$id."个用户: ".$username."<br />";
}
/**/
/www.phpddt.com为你提示:上面之间的内容可以重复执行类似功能,不需要再次编译了*/
//释放结果
$stmt->free_result();
//关闭编译语句
$stmt->close();
//关闭数据库的链接
$mysqli->close();
?>