网络攻击 | 青训营笔记

107 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第3天

前端常见的安全问题

CSRF(跨域请求伪造)

CSRF攻击可以这样理解:攻击者盗用了你的身份,以你的名义进行恶意请求。它能做的事情有很多包括:以你的名义发送邮件、发信息、盗取账号、购买商品、虚拟货币转账等。总结起来就是:个人隐私暴露及财产安全问题。

  • CSRF的攻击思想

    1、浏览并登录信任网站(举例:淘宝)

    2、登录成功后在浏览器产生信息存储(举例:cookie)

    3、用户在没有登出淘宝的情况下,访问危险网站

    4、危险网站中存在恶意代码,代码为发送一个恶意请求(举例:购买商品/余额转账)

    5、携带刚刚在浏览器产生的信息进行恶意请求

    6、淘宝验证请求为合法请求(区分不出是否是该用户发送)

    7、达到了恶意目标

  • 防御措施

    1、涉及到数据修改操作严格使用 post 请求而不是 get 请求

    2、HTTP 协议中使用 Referer 属性来确定请求来源进行过滤(禁止外域)

    3、请求地址添加 token ,使黑客无法伪造用户请求

    4、HTTP 头自定义属性验证(类似上一条)

    5、显示验证方式:添加验证码、密码等

XSS/CSS(跨站脚本攻击)

XSS又叫CSS(Cross Site Script),跨站脚本攻击:攻击者在目标网站植入恶意脚本(js / html),用户在浏览器上运行时可以获取用户敏感信息(cookie / session)、修改web页面以欺骗用户、与其他漏洞相结合形成蠕虫等。

浏览器遇到 html 中的 script 标签时,会解析并执行其中的js代码

针对这种情况,我们对特殊字符进行转译就好了(vue/react等主流框架已经避免类似问题,vue举例:不能在template中写script标签,无法在js中通过ref或append等方式动态改变或添加script标签)

XSS类型:
  • 持久型XSS:将脚本植入到服务器上,从而导致每个访问的用户都会执行
  • 非持久型XSS:对个体用户某url的参数进行攻击
防御措施(对用户输入内容和服务端返回内容进行过滤和转译)
  • 现代大部分浏览器都自带 XSS 筛选器,vue / react 等成熟框架也对 XSS 进行一些防护
  • 即便如此,我们在开发时也要注意和小心
  • 对用户输入内容和服务端返回内容进行过滤和转译
  • 重要内容加密传输
  • 合理使用get/post等请求方式
  • 对于URL携带参数谨慎使用
  • 我们无法做到彻底阻止,但是能增加黑客攻击成本,当成本与利益不符时自然会降低风险