前端安全方面面试题

1. 请简述XSS的原理

跨站脚本攻击, 用户的数据, 数据可能是文章或评论或浏览器访问时候的某个参数, 总之是来自用户的数据, 最后被当做脚本在页面中执行, 执行的地方可能在script标签或其他标签的属性或富文本中等等… 最根本的是本来是个数据被当成了脚本变成了程序

2. 请简述XSS的防御方法

两种思路: 不要让其变成程序, 这个数据变成程序的话不让它执行

  1. 浏览器内置了对反射型XSS的防御, 当它检测到有反射型xss的时候会进行拦截
  2. 对数据进行适当转义, 包括在正文中的转义, 属性中的转义, 脚本中的转义, 转义的字符包括大于号小于号单双引号以及and号等等
  3. 针对不能对html标签全部过滤或转义的情况, 比如富文本, 因为富文本的样式是靠html标签产生的, 这种情况只能使用白名单进行过滤, 就是把这段代码解析成具体的html树, 对树进行分析哪些可以保留, 最后变成html字符串
  4. 使用csp指定哪些内容可以执行, 哪些不能执行

3. XSS的防御需要注意的点

转义的时候注意适用场景和范围
如果是在script标签, 需要转义大于号小于号, 在属性中转义引号, 富文本中只能通过白名单方式… 也就是场景和对应方法

4. CSRF的原理及其危害是什么

浏览器在访问服务器的时候会带上cookie, 而第三方网站通过图片或表单提交方式也会带上cookie, 带上的过程中表示我知道用户身份, 利用身份进行操作, 而这个过程中用户不知情. 危害是冒名发帖, 冒名消费等等

5. CSRF如何防御

不让第三方请求带cookie, 主要通过same-site这个属性, 但是会有兼容性问题
第二种方式是增加用户的感知, 比如验证码, 不让静默操作
第三种方式增加token, 第三方访问时没法读取cookie
第四种方式判断refer, 来源是否来自第三方网站

6. Cookies的作用是什么

从技术上讲, 从浏览器端存储数据, 这个量不会很大, 可能用存储一些网站的配置, 比如偏好, 个性化选择等等, 用户身份的标识, 做一些分析统计等等, 总之放到本地存储的需求都可以放到cookie中.

7. Cookies和localstorage的区别:

兼容性区别, localstorage是H5新增的, 低版本ie不支持
cookie在请求时自动带上, 不需要手工发送, localst无法手动发送
cookie可以指定过期时间, 时间到了自动失效, localst没有这样机制, 需要我们做删除动作

8. Cookies跟session的关系:

session是在服务端实现的, 用来登录时有些登录态需要关注, 它需要有个标识, 需要你告诉我这个人对应的是哪个人
这个标识一般给到cookie里面, 下一次访问时带上
session是基于cookie的存储来实现的

9. Cookies有哪些特性:

容量有限, 跟随html发送, 可以通过http头发送和设置, 通过js读取
属性主要有

  1. 域名(因为有域名就不可以跨域)
  2. 路径path(同一个域名下的path不一样cookies读取情况也不一样)
  3. 有效期
  4. http-only 的无法通过js读取, 只能通过http发送到后台读取
  5. securt 只有在https使用
  6. same-site

10. 如何删除Cookie值

设置Cookie的过期时间为过期时间

11. HTTPS如何保证数据不被窃听和不被中间人攻击

通过数据加密在客户端和服务端通讯之前协商一个加密协议, 通过加密协议传输数据, 第三方可以窃听 但是不知道加密前的原始数据是什么

中间人就是在客户端和服务端之间充当加密和解密角色, 通过证书机制, 服务器证书需要CA签发, 浏览器验证是否可信CA签发

12. 部署HTTPS的步骤

首先确保全站都可以部署到https, 因为部署一部分的话意义有限, 最麻烦的地方是资源引用, 涉及到资源改造
第二部找CA生成证书
第三部部署到服务器

13. SQL注入的原理和造成的危害

跟XSS原理相似, sql语句的语义改变

页面逻辑出现异常
泄露数据, 拖库等

14. Node.js如何防止SQL注入

通过转义, 可能有风险的参数进行转义
通过ORM系统数据模型来做
通过数据库提供的参数化查询能力(表达查询意图, 条件值是什么)

15. 文件上传的漏洞原理和防范

上传的文件执行恶意代码

防范:
判断文件后缀
判断文件类型
判断文件头
设置权限, 让上传的文件没有可执行权限

16. 如何设计用户密码存储?

哈希 + 加盐

17. 如何设计登录过程

用户明文密码不能被对比和存储
登录过程中用跟存储相同的方式进行哈希, 哈希之后对比

18. 如何保证密码不被窃听

https
如果被窃听可能, 要保证明文密码不被泄露

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值