首先我们要对xss和crsf进行足够的了解才能分清楚两者的区别。
XSS漏洞
xss:中文名称跨站脚本攻击,通常出现在搜索框、留言板、评论区等地方
分类:反射性、存储型、DOM型
攻击方式:构造恶意链接,诱骗用户点击盗取用户的cookie信息
反射性xss:
通常这一类xss危害较低,对网站没有什么严重的影响,具体表现在用户在搜索框输入xss语句返回弹框,仅出现一次
存储型xss:
存储型对网站危害较大,用户插入xss语句后,恶意语句会存入网站数据库中,用户访问过程都会出现弹框
DOM型xss:
DOM——文档对象类型
利用浏览器的dom解析,更不容易被发现,可以更改页面布局
漏洞危害:xss蠕虫、会话、流量劫持、网站挂马、盗取cookie
防护方法:设置黑名单和白名单、对用户输入进行过滤、入参字符过滤、出参字符转义、设置httponly
CSRF漏洞
csrf漏洞:中文名称跨站请求伪造,攻击者冒充用户身份执行用户操作
漏洞原理:
1、用户登录信任网站在未退出的情况下访问攻击者构造的恶意网站
2、恶意网站发出访问第三方网站的请求,信任网站收到请求以用户信息访问
3、攻击者在用户不知情的情况下冒充用户身份访问成功
检测漏洞:抓取一个请求包,去掉referer字段进行访问,如果访问有效则存在漏洞
危害:盗用用户身份、执行用户操作,修改信息
防护方法:
1、设置referer字段;但是并不是所有服务器在任何时候都可以接受referer字段,所以这个方法存在一定的局限性
2、设置验证码;在用户操作的过程中设置身份确认的验证码,该方法会很有用,不过验证码频繁的话会影响用户体验
3、设置token值,在用户请求中设置一个随机没有规律的token值可以有效的防止攻击者利用漏洞攻击
区别
从上我们可以总结出:
xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等
csrf:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作