前端面试:黑客的无尽和浏览器的反甲

1.引言

最近有同学在面试中被问到cookie针对xxs攻击设计了什么,因为’护甲’不厚,然后被’暴击’了。 所以本文针对一些浏览器上基本的攻击方式和防御策略总结了一下,可供参考(百度也行)

2.无尽之刃

(一)XSS

  1. 介绍:XSS 全称是 Cross Site
    Scripting(即跨站脚本);通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript。

  2. 原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞

  3. 特点

  • 隐蔽性强 :由于XSS攻击在用户当前使用的应用程序中执行,用户将会看到与其有关的个性化信息,让人难以察觉
  • 发起容易 :(XSS)是最普遍的Web应用安全漏洞
  • 病毒跨站,本地执行
  1. 类型
  • 存储型,顾名思义就是将恶意脚本存储了起来
  • 文档型:XSS 攻击并不会经过服务端,而是作为中间人的角色,在数据传输过程劫持到网络数据包,然后修改里面的 html 文档!
  • 反射型XSS指的是恶意脚本作为网络请求的一部分。

(二)CSRF

  1. 介绍:跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任

  2. 原理: 是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

  3. 特点

  • 伪造性 :病毒冒充用户身份,发送恶意请求
  • 危害大:如同身份证被盗用
  1. 攻击方式
  • 自动发 GET 请求:这个请求会自动带上关于已登录网站的 cookie 信息假如服务器端没有相应的验证机制,它可能认为发请求的是一个正常的用户,因为携带了相应的 cookie,然后进行相应的各种操作,可以是转账汇款以及其他的恶意操作。
  • 自动发 POST 请求:黑客可能自己填了一个表单,写了一段自动提交的脚本,同样也会携带相应的用户 cookie 信息,让服务器误以为是一个正常的用户在操作,让各种恶意的操作变为可能。
  • 诱导点击发送 GET 请求:点击后,自动发送 get 请求,然后进行操作

(三)SQL注入

  1. 介绍 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息

  2. 特点

  • 广泛性:任何一个基于SQL语言的数据库都可能被攻击
  • 隐蔽性: SQL注入语句一般都嵌入在普通的HTTP请求中,很难与正常语句区分开
  • 危害大: 攻击者通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁
  • 操作方便: 互联网上有很多SQL注入工具,简单易学,攻击过程简单,不需要专业知识也能自如运用
  1. 原理:
  • 第一步:SQL注入点探测 判断什么地方存在SQL注入点;
  • 第二步:收集后台数据库信息;
  • 第三步:猜解用户名和密码;
  • 第四步:查找Web后台管理入口;
  • 第五步:入侵和破坏

荆棘之甲

(一)防御XSS

  • 千万不要相信任何用户的输入!无论是在前端和服务端,都要对用户的输入进行转码或者过滤。这样代码在 html 解析的过程中是无法执行的
<script>alert('abcd')</script>//转前&lt;script&gt;alert(&#39;abcd&#39;)&lt;/script&gt;//转后
  • CSP 即浏览器中的内容安全策略,使服务器决定浏览器加载哪些资源,可以限制其他域下的资源加载;禁止向其它域提交数据;提供上报机制,能帮助我们及时发现 XSS 攻击
  • cookie属性设置:HttpOnly属性设置为true; 很多 XSS 攻击脚本都是用来窃取Cookie, 而设置 Cookie 的 HttpOnly 属性后,JavaScript 便无法读取 Cookie 的值。这样也能很好的防范 XSS 攻击

(二) 防御CSRF

  • cookie 属性设置:CRFS用携带的cookie冒充身份,SameSites属性可以控制cookie被请求携带的场合。其中有三个值Strict、Lax和None.设置为 Strict,禁止第三方请求携带。
  • 请求头字段设置:用Origin设置请求域名,用Referer设置请求URL路径
  • Token 安全令牌:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。通常第三方站点无法拿到这个 token, 因此也就是被服务器给拒绝。

(三)防御SQL注入

  • 通过正则表达校验用户输入 首先我们可以通过正则表达式校验用户输入数据中是包含:对单引号和双"-"进行转换等字符。然后继续校验输入数据中是否包含SQL语句的保留字,如:WHERE,EXEC,DROP
  • 通过参数化存储过程进行数据查询存取: 参数数化存储过程帮我们校验出传递给数据库的变量的类型,控制用户权限

前端面试:黑客的无尽和浏览器的反甲相关推荐

  1. 【前端面试知识题】- 2. 浏览器

    序列号 内容 链接 1 前端知识面试题 - http&https(2022版) https://blog.csdn.net/qq_43061290/article/details/126651 ...

  2. 前端面试知识点大全——浏览器篇

    总纲:前端面试知识点大全 目录 1.浏览器工作原理 2.浏览器如何解析css,如何渲染css的 2.1 构建DOM树 2.2 构建CSSOM规则树(就是css规则树) 2.3 渲染阻塞 2.4 构建渲 ...

  3. 2020最全前端面试系列(浏览器原理)(最容易忽视的面试隐藏大杀器)

    2020前端面试系列(浏览器原理) 浏览器输入URL到返回页面的全过程 浏览器渲染步骤 重排和重绘 触发reflow情形 减少reflow方法 浏览器本地存储方案的比较 cookie localSto ...

  4. 前端面试查漏补缺--(一) 防抖和节流

    前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...

  5. 前端面试查漏补缺--(二) 垃圾回收机制

    前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...

  6. 前端面试查漏补缺--(三) 跨域及常见解决办法

    前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...

  7. 前端面试查漏补缺--(十) 前端鉴权

    前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...

  8. 前端对所有文件请求添加header_【前端面试必问】浏览器缓存原理?送你满分答案...

    (本文适合所1-3年的前端阅读) 原文链接: http://blog.poetries.top/2019/01/02/browser-cache/ 一.浏览器缓存基本认识 分为强缓存和协商缓存 浏览器 ...

  9. java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...

    点击蓝字,关注我们 『浏览器从输入URL到页面渲染发生了什么』作为一个经典题目,在前端面试中高频出现,很多大厂的面试都会从这个面试题出发,考察候选人对知识的掌握程度,这其中涉及到了网络.操作系统.We ...

最新文章

  1. ubuntu14.04 install build-essential 出现错误 unable to loate package build-essential
  2. Httpclient 实现带参文件上传
  3. python api接口 安全_App开放接口api安全性的设计与实现
  4. Sql Server常用函数及技巧
  5. java 数据库外键查询_oracle中查询所有外键引用到某张表的记录
  6. Spring Boot笔记-JPA自定义SQL语句参数为对象时如何操作
  7. Arcgis for javascript不同的状态下自己定义鼠标样式
  8. IATF16949认证辅导,IATF16949第六章容易发生的问题点及处理方案
  9. 五种常用的MySQL图形化管理工具
  10. SuiteCRM中的控制器
  11. iOS高仿app源码:纯代码打造高仿优质《内涵段子》
  12. Wise Force Deleter强制删除工具
  13. 【算法入坑】(一)双指针yyds,学完双指针刷题贼爽嘞
  14. 操作系统之文件管理系统
  15. PMP备考大全:经典题库(8月第4周)
  16. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
  17. php黑名单绕过,文件上传漏洞之黑名单检测绕过
  18. 紫乌鸦服务器维护后多久刷,魔兽世界:9.0卡这个技巧,10分钟5只稀有坐骑,紫乌鸦惑龙入手!...
  19. 复旦大学研究生机试(2019)
  20. java urlencoder 特殊_java URLEncoder 中特殊处理

热门文章

  1. Java打飞机小游戏(附完整源码)
  2. python爬取小说代码_Python scrapy爬取小说代码案例详解
  3. word中使用超级链接
  4. 乳腺增生应如何治疗 乳腺增生怎么调理好
  5. lol什么服务器出无限活力,英雄联盟无限火力什么时候在国服上线
  6. 程序员必看的技能图谱
  7. 苹果手机 iphone找回方法
  8. python头像转卡通_将真实照片转换为卡通风格的非真实感图像
  9. 数商云B2B商城系统个性化功能详解 | B2B电商模式赋能日化行业加快数字化发展
  10. 屏幕适配,rom适配和版本适配