常见攻击
目录
1. XSS攻击
1.1 特性
-
XSS
- 跨站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的攻击。
- 反射型
点击一个嵌入恶意脚本的链接实现攻击 - 持久型
提交恶意脚本保存到被攻击的Web站点的数据库中
1.2 手段
- 消毒
针对嵌入恶意js脚本的攻击方法,对用户输入中不适用的进行过滤,<img src=
转义为<,但要防止3<5这种情况。使用匹配进行转义即可。 - HttpOnly
浏览器禁用页面js访问带有HttpOnly属性的Cookie,这样可以防止XSS攻击窃取Cookie中的重要信息。
2.SQL注入攻击
例:攻击者发送http://www.baidu.com?username='Frank';drop table users;--
到服务器,服务器执行SQL,Select * from users where username='Frank';drop table users;--
。服务器用请求参数构造数据库SQL命令时,恶意SQL被一起构造,并执行了。
2.1 特性
-
攻击者需要提前知道数据库的结构
错误回显
-
服务器内部500错误会显示到浏览器上,攻击者通过故意构造非法参数,使服务器异常信息输出到浏览器端。
2. 盲注
2.2防御
消毒
类似XSS攻击,请求消毒参数绑定
将SQL的输入当做参数来做,而不是把参数和SQL语句联合再来使用query来做
2.3 PHP防范方法
- htmlspecialchars()函数会将字符串自动过滤
htmlspecialchars_decode()反过滤 - 2.
3. CSRF攻击
跨站点请求伪造(Cross Site Request Forgery),攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易、发表评论等。其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份。
3.1 防御
- 表单Token
表单Token通过在请求参数中增加随机数的办法来阻止攻击者获取所有请求参数:在页面表单中增加一个随机数作为Token,每次响应页面的Token都不同。(类似于discuz中加入了令牌加密)
验证码
在提交请求时,需要用户输入验证码,以免在用户不知情的情况下被攻击者伪造请求。Referer check
HTTP请求头中的Referer域记录着请求来源,可通过检查请求来源,验证是否合法。很多网站使用这个功能实现图片防盗链。
ps:防盗链的方法,1.在apache中的httpd.conf中SetEnvIfNoCase Referer "^http://yahoo.com/" local_ref=1
将网站设置为自己的网站地址。2.在每个请求之前加上
$referer = $_SERVER['HTTP_REFERER']; //HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
$selfurl = $_SERVER['HTTP_HOST'];//在php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。
if(false == strpos($referer,$selfurl))
{
echo '非法盗链!';
exit(1);
}
在代码中实现。