XSS CSRF 解释

XSS(Cross Site Script)

跨站脚本攻击会像站点注入Html/JavaScript代码

  • 举个茄子🌰:

在页面中的某个input输入框中,攻击者输入<script>alert('666')</script>,页面将弹出这个666,如果用户使用更加牛逼的JS代码,来获取用户存在客户端的数据,如getCookie(name)这类代码,那用户的数据则暴露给攻击者无疑。

  • 防范方法
  1. 后端过滤任何可疑HTML标签,最好过滤<,>这两个符号。
  2. 当然通过前端路由xss,那也很难解决,唯有后端对URL,进行规则验证.

CSRF(Cross Script Request forgery)

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。[1] 跟跨網站指令碼(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

  • 举个🌰

某站点用户转账链接如下 http://exapmle.com/transfer?account=xiaohong&amount=1000&payfor=xiaoming

小红刚刚转账给小明1000元,登录信息未过期!然后又访问了攻击者的网站,该网站中诱导小红点击如下链接

http://exapmle.com/transfer?account=xiaohong&amount=1000&payfor=hack

那小红账户则会向hack用户继续转账。

  • 防范方法
  1. 检查Referer字段
    后端在重要操作路由中检查用户访问过来的头信息,如以上站点referer字段对应的应该和exapmle.com一样的头信息,如果不对则能识别出恶意访问!但是这种手段也有缺陷,攻击者可以绕过浏览器自定义头信息。

  2. 添加效验Token
    CSRF本质是欺骗用户访问自己设置的地址,那么要求用户在访问某些地址时候提供不存在浏览器Cookie中,且攻击者也无法伪造的数据作为效验,那么攻击者则束手无策啦!在form表单中添加一个隐藏input放入后台加密的token值,用户提交过来在验证token是否正确!

参考资料

weiki