PHP高级工程师之网站安全
在这里和大家分享一下多数网络黑客常用的攻击方式及预防措施。
如有不善,多提意见(QQ:1595068971-邮箱:1595068971@qq.com)
1.SQL注入
攻击描述:表面来说是拼接字符串,构成sql语句,没有使用sql语句预编译,绑定变量。更深层次的说是将用户输入的字符串当成了sql语句来执行。
危害说明:只要找到一个注入点,就可以通过sql语句实现无账号登陆,甚至篡改数据库。
处理方法:基本上大家都知道采用sql语句预编译和绑定变量,是防止SQL注入的最佳方法。但其中的深层次原因就不见得都理解了。
String sql = “select id, no from user where id=?”;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeQuery();
这就是典型的采用了SQL语句预编译和绑定变量。为什么这样就可以防止sql 注入呢?
其原因就是:采用了PreparedStatement,就会将sql语句:”select id,name from user where id=?”预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该SQL语句的语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql命令,比如 select,from,where,and,or,order by等等。所以即使你后面输入了这些命令,也不会被当成sql命令来执行了,因为这些sql命令的执行,必须先得通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当作字符串字面值参数。所以sql语句预编译可以防御sql注入。
2.XSS跨站脚本攻击(Cross-site scripting)
攻击描述:
危害说明:
处理方法:
3.CSRF跨站请求伪造攻击(Cross-site request forgery)
攻击描述:伪造请求,模仿用户提交表单的行为,从而达到修改用户数据,或者执行特定任务的目的,CSRF常常和XSS配合起来,但也可以通过别的方式,比如诱导用户点击一个包含攻击的连接。
危害说明:模仿用户提交表单的行为,从而达到修改用户数据,或者执行特定任务的目的
处理方法:采用post,增加攻击难度。对请求进行验证,确保该请求是用户本人填写并提交的,可以在会话中增加token,确保看到信息和提交信息的是一个人。
4.Cookie攻击
攻击描述:利用javascript获取网站cookie,在浏览器地址栏输入javascript:alert(document.cookie).立刻就可以看到当前站点的cookie
危害说明:所有登陆状态这些都是加你在cookie上的!假设我们登陆后的cookie被人获得,那就回有暴露个人信息的危险!
处理方法:
第一种:php.ini中session.cookie_httponly = 1 或 TRUE(开启全局属 性)。
第二种:代码开启ini_set(“session.cookie_httponly”, 1);或session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
第三种:Setcookie和setrawcookie添加阿第七个参数设置为TRUE;
5.重定向攻击
攻击描述:钓鱼公鸡者,给受害者发送一个合法链接,点击链接时,用户被重定向一个似是而非的非法网站,骗取用户信息,窃取用户资料。
危害说明:骗取用户信息,窃取用户资料。
处理方法:我们要对所有重定向操作进行审核,避免重定向到一个危险的地方,将合法的要重定向的URL添加到白名单中,非白名单上的域名重定向时拒绝。也可以重定向token在合法的url上加上token重定向时进行验证。
原文链接:https://www.cnblogs.com/wangboshen/p/7360329.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18537