XSS:解释为跨域脚本攻击。
通过页面输入等等形式将脚本传输到后端,在请求响应中回传攻击脚本,然后在浏览器执行脚本造成攻击,基本攻击方式就是:在页面输入部分添加上攻击脚本。
两种类型:
反射型:攻击脚本跟随请求到后台,再返回给前端,由浏览器执行脚本。
存储型:攻击脚本随请求到后台然后被后台存储,之后就不需要再在请求中放入攻击脚本,只要浏览器请求后攻击脚本被查询回传到浏览器就能发生攻击。
个人认为:xss既然能将脚本发给后台,那么不仅仅是页面被攻击,服务器、数据库这些都有可能被攻击。
防御方式:
1.校验输入
2.请求编码
3.过滤
总之:不要相信任何用户输入的任何数据。
csrf:解释为跨站伪造请求。
攻击时序
因为浏览器本身并不知道是哪个网站要求发起的请求,所以在浏览器被B要求访问A的时候它会毫无阻拦,那么A就被执行了并非用户发起的操作,并且还是能是A认为是合法的操作。
防御:
1.验证Referer(也就是请求来源),但是还是会有风险,不同浏览器的安全级别和漏洞不同。
2.使用token。
3.自定义header,比如后端给前端返回csrf的随机字符,前端放入cookie,每次请求再在请求数据中传给后端(攻击者不会知道cookie中放的是什么)。