XSS攻击
跨站脚本攻击(Cross Site Scripting)。
是一种普遍的web应用安全漏洞,通常是指黑客利用网页开发时留下的漏洞,注入恶意指令代码,在用户正常浏览网页的时候,恶意指令代码执行,从而达到攻击用户的目的。
危害:XSS攻击一般会盗用用户的Cookie信息,或者是以用户的身份执行一下管理行为,如发微博、发私信等。
XSS攻击分为持久型、非持久型和DOM。
- 持久型:恶意脚本存储在服务端数据库,浏览这个页面的用户都会被攻击。
- 非持久型:最普遍的类型,用户将有恶意代码的请求发送给服务器端,服务器端接收到请求后又反射给客户端。这种攻击方式需要用户点击某个恶意链接才能攻击成功。
- 基于DOM的XSS:在web资源传输过程中或者用户使用页面的过程中修改web页面的数据。
防御:对输入进行过滤,对输出进行编码。
CSRF攻击
跨站域请求伪造(Cross Site Request Forgery)
原理及过程:
- 用户打开浏览器,访问受信任的网站A,并输入用户名密码请求登录网站A;
- 用户信息验证通过后,网站A产生cookie信息并返回给浏览器,此时用户可以正常发送请求到网站A;
- 用户没有退出网站A,在同一个浏览器中打开网站B;
- 网站B接收到用户请求后,返回一些攻击代码,并发出请求要求访问网站A;
- 浏览器收到这些攻击代码之后,根据网站B的要求,在用户不知情的情况下携带Cookie信息,向网站A 发起合法的请求。
危害:盗用用户身份,发送恶意请求,如模拟用户发送邮件,发消息,以及支付、转账等
防御:
- 重要数据交互使用POST接收;
- 使用验证码。在表单中添加一个随机数字或字母验证码,强制要求用户和应用进行直接的交互;
- 验证HTTP中的Referer字段。该字段记录了HTTP请求的来源地址,可以检查是不是从正确的域名访问过来;
- 使用token验证。为每个表单添加令牌token,并且在服务器端建立一个拦截器验证这个token,如果token不对,就拒绝这个请求。