总结 xss 的原理 xss 是跨站脚本攻击,用户的数据(文章,访问的参数),被当作脚本执行,执行的地方有可能是 script 标签内,其他标签的属性,或者是富文本,最根本是数据变成了一个脚本 xss 的防御 浏览器内置对反射性 xss 防御,对反射性 xss 进行拦截 对数据进行适当的转义,正文的转义,属性的转义和脚本中的转义,字符包括大于号,小于号,引号,以及&号 针对不能将 html 过滤或…

总结

  1. xss 的原理

    xss 是跨站脚本攻击,用户的数据(文章,访问的参数),被当作脚本执行,执行的地方有可能是 script 标签内,其他标签的属性,或者是富文本,最根本是数据变成了一个脚本

  2. xss 的防御
    1. 浏览器内置对反射性 xss 防御,对反射性 xss 进行拦截
    2. 对数据进行适当的转义,正文的转义,属性的转义和脚本中的转义,字符包括大于号,小于号,引号,以及&号
    3. 针对不能将 html 过滤或者转义的情况,比如富文件,富文本样式等,进行白名单过滤,对执行标签的属性是可以保留的
    4. 通过 csp,通过这种方式,限制哪些内容是可以执行的,哪些内容是不可执行的
  3. xss 防御需要注意的点

    转义的时候要注意使用场景和范围,比如是 script 标签,需要转义大于号,小于号,如果是 html 属性,转义引号,如果是富文本,要通过白名单

  4. csrf 是什么

    浏览器在访问服务器带上 cookie,第三方网站通过图片或者标签访问服务器也是带上 cookie,带上就知道身份,就利用身份操作,在这个过程中,是因为在第三方,所以用户不知情,最根本是,在用户不知情的情况下,带上用户身份,对目标网站发起请求

  5. csrf 的危害

    盗用用户身份做的式,模拟发帖,盗用用户身份消费

  6. csrf 如何防御
    1. 不让第三方请求带 cookie,通过 same-site cookie 属性,进行设置
    2. 带上用户感知,比如带上验证码,每次请求目标网站,让用户都知情
    3. 带上 token,同时写入页面 cookie,第三方访问获得不到 cookie,所以请求不合法
    4. 判断 refer,如果 refer 是第三方网站,就是不合法
  7. cookie 的作用是什么
    1. 在浏览器存储数据,持续的存在,除非有效时间到了,不会随着浏览器的关闭而小时
    2. 用 cookie 存储,网站的配置,偏好是什么,之前做了什么个性化的选择,用户身份的标识
    3. localStoreage 是 H5 新增的,cookie 自动请求时带上,不需要手动发送,localStore 只能手动删除
  8. cookie 和 session 的区别
    1. session 的使用与用户相关,比如用户的登录态可以放在 cookie 中
    2. session 要有一个标识,在服务端实现的,session 要有一个标识,这个标识是放在 cookie 中,当开启 session,把标识存在 cookie,下次访问带上这个标识,就可以取到对应的 session,session 是基于 cookie 的存储实现的
  9. cookie 有哪些特性
    1. 容量比较小,通过 http 发送,js 可读取和写入
    2. 域名:因为有域名就不能跨域,路径:同一个域名 path 不一样,cookie 的读取也不一样,有效期:在指定时间有效,http-only:只能通过服务器读取,securiy:只能通过 https 访问,same-site,不让第三方请求带上 cookie
    3. 通过设置一个过期的时间就可以删除 cookie
  10. https 如何保持数据不可窃听

    保证 web 安全的协议,通过 http 加了一个加密层(tsl/ssl),在客户端与服务端通信前通过一个加密协议进行加密,传输的时候第三方无法知道原始数据是什么

  11. https 如何保证中间人攻击
    1. 中间人攻击:通过中间人角色,充当客户端和服务端,拦截客户端通信,解密,加密后重新给服务端,也是加密的
    2. 服务器的证书是由 ca 签发,浏览器验证是否是 ca 发的证书,是就是合法的服务器,不是就是伪造的服务器
  12. 部署 https 的步骤
    1. 所以的内容都可以使用 https 访问
    2. 找 ca 生成一个证书,部署到服务器中
  13. sql 注入的原理

    用户查询本应该是数据,但是数据中夹杂着 sql 语句,导致了查询语句的语义改变

  14. sql 的危害是什么
    1. 输出不让用户看到的信息
    2. 最严重的请求,整个数据的泄露,比如拖库
  15. nodejs 如何 sql 注入
    1. nodejs 可以通过可能有风险的数据转义,但是有些情况会被彻底
    2. orm 数据关系模型
    3. 参数化查询,把原本拼起来的 sql,变成 2 个部分,第一个部分是查询意图,第二部分就是出现的条件,条件值是什么
  16. 文件上传漏洞原理

    上传文件后,文件再次访问被当作程序去执行,里面可能有恶意代码

  17. 防范上传漏洞
    1. 判断文件类型
    2. 判断文件头对不对
    3. 设置权限,让上传文件没有可执行权限,但是在 node 不适用
    4. 分离文件存储,文件只存储在存储文件的服务器
  18. 如何设计用户密码存储
    1. 对密码 hash 存储,多次 hash,加盐存储
  19. 如何设置登录过程
    1. 是不能明文密码对比和存储的
    2. 在登录过程中加密
  20. 如何不通过密码不被窃听
    1. 通过 https 加密,传输过程中不被窃听
    2. 明文不被窃听,通过客户端加密方式可以,但是登录态的保护是有限的

暂无评论