XSS(Cross Site Script)
跨站脚本攻击会像站点注入
Html/JavaScript
代码
- 举个茄子🌰:
在页面中的某个input
输入框中,攻击者输入<script>alert('666')</script>
,页面将弹出这个666
,如果用户使用更加牛逼的JS
代码,来获取用户存在客户端的数据,如getCookie(name)
这类代码,那用户的数据则暴露给攻击者无疑。
- 防范方法
- 后端过滤任何可疑
HTML
标签,最好过滤<
,>
这两个符号。 - 当然通过前端路由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用户继续转账。
- 防范方法
检查
Referer
字段
后端在重要操作路由中检查用户访问过来的头信息,如以上站点referer
字段对应的应该和exapmle.com
一样的头信息,如果不对则能识别出恶意访问!但是这种手段也有缺陷,攻击者可以绕过浏览器自定义头信息。添加效验Token
CSRF本质是欺骗用户访问自己设置的地址,那么要求用户在访问某些地址时候提供不存在浏览器Cookie
中,且攻击者也无法伪造的数据作为效验,那么攻击者则束手无策啦!在form
表单中添加一个隐藏input
放入后台加密的token
值,用户提交过来在验证token
是否正确!