最近参加了一个WEB安全培训,感受WEB攻击跟防护都是挺有意思的。如下总结比较简短,仅供观赏哈。javascript
1、XSS攻击html
【介绍】java
xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的内容文本,若是服务器端没有过滤或转义这些脚本,而这些脚本由经过内容的形式发布到了页面上,这个时候若是有其余用户访问这个网页,那么浏览器就会执行这些脚本,从而被攻击,从而获取用户的cookie等信息。sql
【防护】数据库
一、对于敏感的cookie信息,使用HttpOnly,使document对象中找不到cookie。浏览器
二、对于用户输入的信息要进行转义。安全
2、CSRF攻击服务器
【介绍】cookie
CSRF攻击即跨站域请求伪造,例如,小明在浏览银行A网站的时候并无关掉银行网站,这时小明又访问了携带CSRF攻击的B网站,而这时候B网站经过对银行的服务器发送转帐请求,而且携带小明的在银行网站的cookie信息,在参数上把小明帐号上的钱转到B网站全部人的帐户上,这时url获得响应,小明的钱就丢了。session
【防护】
一、敏感请求使用验证码。
二、验证HTTP Referer字段。Referer字段记录了HTTP请求的来源地址,从银行A网站发出来的请求会带有A网站的地址,从携带CSRF地址发出的请求会携带B网站的地址,咱们只需在每一个敏感请求验证Referer值,若是是来自A网站的经过,不然不经过。可是这种方法把安全寄托于浏览器,并不彻底安全,在某些浏览器上,仍是能够经过篡改 Referer 从而进行CSRF攻击。并且,在某些用户禁用Referer的状况下,服务器会一直拒绝客户的请求。
三、在请求地址中添加token 并验证。在用户登陆以后,产生token 并放入session中,在每次请求时把token从session中拿出来,以参数的形式加入请求,在服务器端创建拦截器验证该token,token则经过,不然拒绝。可是这种方法也是有安全问题的,在某些网站支持用户发表连接的,那么黑客在该网站发布本身的我的网站地址,系统也会为这个地址后加上token,则黑客能够在本身的网站上获得这个token参数,从而发动CSRF攻击。
四、在HTTP头中自定义属性token 并验证。把token做为自定义属性放在HTTP的头中,经过封装XMLHttpRequest能够一次性给全部请求加上token 属性。这样子token就不会暴露在浏览器地址中。
3、SQL注入
【介绍】
SQL注入攻击,攻击者在提交表单的时候,在表单上面填写相关的sql语句,而系统把这些字段当成普通的变量发送给服务器端进行sql查询,则,由攻击者填写的sql会拼接在系统的sql语句上,从而进行数据库的某些操做。
例如在简单的登录表单里面
<form action="/login" method="POST">
Username: <input type="text" name="username" />
Password: <input type="password" name="password" />
<input type="submit" value="登录" />
</form>
这时候系统处理的sql语句是这样
username:=r.Form.Get("username") password:=r.Form.Get("password") sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"
而这时候攻击者输入的用户名以下,密码为任意值的状况下
myuser' or 'foo' = 'foo' --
那么系统的sql语句就会变成这样
SELECT * FROM user WHERE username='myuser' or 'foo' = 'foo' --'' AND password='xxx'
则攻击者就会成功登录
【防护】
一、表单过滤,验证表单提交的合法性,对一些特殊字符进行转义处理
二、数据库权限最小化
三、查询语句使用数据库提供的参数化查询接口,不要直接拼接SQL
4、身份认证和会话
【攻击】
黑客在浏览器中停用JS,防止客户端校验,从而进行某些操做。
【防护】
一、隐藏敏感信息。
二、对敏感信息进行加密。
三、session 按期失效
5、权限与访问控制
【攻击】
能经过URL参数的修改达到访问他人页面,例如,黑客可以使用一下的连接去访问在某商城上本身的订单连接
https://***.***.com/normal/item.action?orderid=51338221644
这个时候若是网站没有相关权限验证,那么他也能经过下面的连接去访问其余人的订单。
https://***.***.com/normal/item.action?orderid=其余id
这样子就会形成商城其余人的隐私的泄露。
【防护】
一、添加权限系统,访问的时候能够加上相应的校验。
6、不安全加密存储
【防护】
一、加密存储敏感信息
二、不用md5加密
7、上传漏洞
【攻击】
在图片上传的时候,攻击者上传非图片,而是可远程执行的的脚本,这时候,入侵者就能够远程的执行脚原本对服务器进行攻击
【防护】
一、限制文件上传类型
二、使用第三方文件托管等
8、传输层未加密
【防护】
一、使用安全的https版本
二、敏感信息使用https传输
三、非敏感信息使用http传输
9、未验证的重定向和转发
【攻击】
用于钓鱼,黑客在存在漏洞的网址后添加跳转参数,而且把参数转码,把连接发送给用户,诱导用户点击,这时候用户看到连接的最前面是熟悉的网址,会点击进去,从而是用户的点击发生重定向到非法网站。
【防护】
一、添加跳转白名单
二、跳转前提示用户即将发生跳转到其余可疑网页。
10、WebShell
【攻击】
黑客在win系统中向被攻击网站上传 abc.asp;.jsp文件,这时候系统识别为jsp文件,而后传送到服务器的时候,某些系统上面会识别为 asp 文件。