sql注入,xss攻击,csrf攻击,文件上传漏洞,访问控制。这些是通常网站容易发生的攻击方式,接下来咱们一一分析它们是如何攻击以及防范的。php
1、sql注入html
<1>什么是sql注入?前端
sql注入说的通俗一些就是用户在http请求中注入而已的代码,致使服务器使用数据库sql命令时,致使恶意sql一块儿被执行。mysql
用户登陆,输入用户名 zhangsan,密码 ‘ or ‘1’=’1 ,若是此时使用参数构造的方式,就会出现sql
select * from usershell
where name = 'zhangsan' and password = '' or '1'='1'数据库
这样zhangsan用户没有密码也能够被登录,若是用户注入的是操做表的sql,就有大麻烦了。后端
<2>怎么防范sql注入?浏览器
1.不用拼接 SQL 字符串安全
2. 有效性检验。(前端后端都须要。第一准则,外部都是不可信的,防止攻击者绕过Web端请求)
3过滤 SQL 须要的参数中的特殊字符。好比单引号、双引号。推荐几个函数mysql_real_escape_string() addslashes()htmlentities() htmlspecialchars() strip_tags() intval()
4.限制字符串输入的长度。
2、xss攻击
<1>什么是xss攻击
跨站点脚本攻击,指攻击者经过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操做的一种攻击方式。
假设页面上有一个表单:
<input type="text" name="name" value="lisi"/>
若是,用户输入的不是一个正常的字符串,而是
"/><script>alert("haha")</script><!-
此时,页面变成下面的内容,在输入框input的后面带上了一段脚本代码。
<input type="text" name="name" value="梁桂钊"/><script>alert("haha")</script><!-"/>
这端脚本程序只是弹出一个消息框,并不会形成什么危害,攻击的威力取决于用户输入了什么样的脚本,只要稍微修改,即可使攻击极具攻击性。常见的就是用户通常在评论中或者反馈中使用xss。
<2>如何防范xss
同sql注入同样。能够限制输入字符串的长度,对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。
3、csrf攻击
<1>什么是csrf攻击
跨站点请求伪造,指攻击者经过跨站请求,以合法的用户的身份进行非法操做。能够这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能作的事情包括利用你的身份发邮件,发短信,进行交易转帐,甚至盗取帐号信息。跨站点请求伪造,指攻击者经过跨站请求,以合法的用户的身份进行非法操做。能够这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能作的事情包括利用你的身份发邮件,发短信,进行交易转帐,甚至盗取帐号信息。
<2>怎么防止csrf
1. 安全框架使用。好比yii lavarel等。
2. token机制。在HTTP请求中进行token验证,若是请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。
3. 验证码。一般状况下,验证码可以很好的遏制CSRF攻击,可是不少状况下,出于用户体验考虑,验证码只能做为一种辅助手段,而不是最主要的解决方案。
4. referer识别。在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。若是Referer是其余网站,就有多是CSRF攻击,则拒绝该请求。可是,服务器并不是都能取到Referer。不少用户出于隐私保护的考虑,限制了Referer的发送。在某些状况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。
4、文件上传漏洞
<1>什么是文件上传漏洞
文件上传漏洞,指的是用户上传一个可执行的脚本文件,并经过此脚本文件得到了执行服务端命令的能力。好比用户上传一个能够关机的执行文件,你的损失就大发了。
<2>如何防范
1. 文件上传的目录设置为不可执行。
2. 判断文件类型。在判断文件类型的时候,能够结合使用MIME Type,后缀检查等方式。由于对于上传文件,不能简单地经过后缀名称来判断文件的类型,由于攻击者能够将可执行文件的后缀名称改成图片或其余后缀类型,诱导用户执行。
3. 对上传的文件类型进行白名单校验,只容许上传可靠类型。
4. 上传的文件须要进行从新命名,使攻击者没法猜测上传文件的访问路径,将极大地增长攻击成本,同时向shell.php.rar.ara这种文件,由于重命名而没法成功实施攻击。
5. 限制上传文件的大小。
6. 单独设置文件服务器的域名。