主要有以下的三个:
a) XSS(跨站点脚本攻击)(cross-site scripting)
-> 伪造会话(基于XSS实现CSRF) -> 劫持cookie
-> 恶意代码执行
b) CSRF(跨站请求伪造)(cross-site request forgery)
-> 伪造用户身份操作
c) sql注入
其原理主要是:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令的目的
d)界面操作劫持
防范sql注入的措施
1)永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等
2)永远不要使用动态拼装SQL,可以使用参数化的SQL进行数据查询存取
3)永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限的数据库连接
4)不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。
浏览器的Cookie策略:
Cookie 是服务器发送到用户浏览器,并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时,被携带在请求头中并发送到服务器
跨站请求伪造(CSRF)的定义
跨站请求伪造(请求是来源于其他网站的—跨站请求,这个请求并不是来自于用户的意愿----伪造的请求),简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的
定义:
是一种劫持受信任用户,向服务器发送非预期请求的攻击方式。
通常情况下,CSRF 攻击是攻击者借助受害者的 Cookie 骗取服务器的信任,可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击服务器,从而在并未授权的情况下执行在权限保护之下的操作
跨站请求伪造(CSRF)和跨站脚本攻击(XSS)的区别
XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包.
跨站请求伪造(CSRF)的特点
a) 采用cookie来进行用户校验
b) 登录受信任网站A,并在本地生成Cookie
c) 在不登出A的情况下,访问危险网站B
CSRF的类型
1)请求类型区分:get和post型CSRF攻击
2)按照攻击方式分类:HTML CSRF攻击;JSON HiJacking攻击;Flash CSRF攻击等
HTML CSRF攻击:发起的CSRF请求都属于HTML元素,比如
GET型的CSRF:
通过html标签
<link href=''>
<a href=''>