web开发安全 | 青训营笔记

64 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第十天。

本课堂重点内容:

  • 攻击篇
  • 防御篇

安全问题是非常常见的,会危害用户、公司以及程序员。那么我们可以从两个角度看web安全:

  • hacker--攻击角度
  • 开发者--防御角度

攻击篇

XSS

之前学计算机网络相关,接触过XSS的知识。XSS(Cross-site Scripting),通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScriptActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。(来源百度百科)

image.png

XSS的特点:

  • 通常难以从UI感知(暗地执行脚本)
  • 窃取用户信息
  • 绘制UI(例如弹窗),诱骗用户点击/填写表单

image.png

XSS类型包括:存储型XSS、反射型XSS、DOM的XSS

CSRF

  • 在用户不知情的前提下
  • 利用用户权限
  • 构造指定的HTTP请求,窃取或修改用户敏感信息

image.png

防御篇

针对XSS,就是永远不信任用户的提交内容,并且不要将用户提交内容直接转换成DOM。

前端的主流框架都默认防御XSS,服务端有DomPurity

CSRF的防御:

image.png

SameSite,依赖Cookie的第三方服务器,内嵌一个X站播放器,识别不了用户登录状态,发不了弹幕。

SameSite VS CORS:

image.png