XSS(跨站脚本攻击)
推荐学习链接:https://www.bilibili.com/video/BV1U54y197bc?p=35
跨站脚本攻击(Cross Site Script)。
浏览器错误的将攻击者提供的用户输入数据当做了JavaScript脚本给执行了,窃取包括用户身份信息在内的各种敏感信息、修改Web网页以欺骗用户,设置控制受害者浏览器,或者和其他漏洞结合起来形成蠕虫攻击。
浏览器向服务器请求时被注入脚本攻击,篡改浏览器正常展示,窃取用户信息。
-
三种类型:存储(持久型)、反射(非持久型)、DOM型
-
防御
最佳做法就是对数据进行严格的输出编码,使攻击者提供的数据不再被浏览器认识是脚本而被误执行。
其他防御措施,如设置CSP HTTP Header、输入验证、开启浏览器XSS防御等等都是可选项、原因在于这些措施都存在被绕过的问题,并不能完全保证能防御XSS攻击。不过和输出编码可以共同协作实施防御策略。
CSRF(跨站请求伪造)
推荐学习链接:https://www.bilibili.com/video/BV1U54y197bc?p=37
跨站请求伪造(Cross -site request forgery)。
浏览器发出了违背用户意愿的请求,伪造请求,例如转发微博,添加管理员,修改资料等等。
黑客通过网站B,诱使用户去访问已经登录了的网站A,进行一些违背用户意愿的请求,造成用户损失。
-
防御:(主要是在服务器端防范)
请求头验证:refer字段、加token(主流方式)、加验证码
(如果有个xss进行csrf的话,就可以无视以上所有防御,甚至是简单的图片验证码)
跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户浏览器的信任。