前端面试:黑客的无尽和浏览器的反甲
前端面试:黑客的无尽和浏览器的反甲
1.引言
最近有同学在面试中被问到cookie针对xxs攻击设计了什么,因为’护甲’不厚,然后被’暴击’了。 所以本文针对一些浏览器上基本的攻击方式和防御策略总结了一下,可供参考(百度也行)
2.无尽之刃
(一)XSS
介绍:XSS 全称是 Cross Site
Scripting(即跨站脚本);通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript。原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞
特点
- 隐蔽性强 :由于XSS攻击在用户当前使用的应用程序中执行,用户将会看到与其有关的个性化信息,让人难以察觉
- 发起容易 :(XSS)是最普遍的Web应用安全漏洞
- 病毒跨站,本地执行
- 类型
- 存储型,顾名思义就是将恶意脚本存储了起来
- 文档型:XSS 攻击并不会经过服务端,而是作为中间人的角色,在数据传输过程劫持到网络数据包,然后修改里面的 html 文档!
- 反射型XSS指的是恶意脚本作为网络请求的一部分。
(二)CSRF
介绍:跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
原理: 是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
特点
- 伪造性 :病毒冒充用户身份,发送恶意请求
- 危害大:如同身份证被盗用
- 攻击方式
- 自动发 GET 请求:这个请求会自动带上关于已登录网站的 cookie 信息假如服务器端没有相应的验证机制,它可能认为发请求的是一个正常的用户,因为携带了相应的 cookie,然后进行相应的各种操作,可以是转账汇款以及其他的恶意操作。
- 自动发 POST 请求:黑客可能自己填了一个表单,写了一段自动提交的脚本,同样也会携带相应的用户 cookie 信息,让服务器误以为是一个正常的用户在操作,让各种恶意的操作变为可能。
- 诱导点击发送 GET 请求:点击后,自动发送 get 请求,然后进行操作
(三)SQL注入
介绍 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
特点
- 广泛性:任何一个基于SQL语言的数据库都可能被攻击
- 隐蔽性: SQL注入语句一般都嵌入在普通的HTTP请求中,很难与正常语句区分开
- 危害大: 攻击者通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁
- 操作方便: 互联网上有很多SQL注入工具,简单易学,攻击过程简单,不需要专业知识也能自如运用
- 原理:
- 第一步:SQL注入点探测 判断什么地方存在SQL注入点;
- 第二步:收集后台数据库信息;
- 第三步:猜解用户名和密码;
- 第四步:查找Web后台管理入口;
- 第五步:入侵和破坏
荆棘之甲
(一)防御XSS
- 千万不要相信任何用户的输入!无论是在前端和服务端,都要对用户的输入进行转码或者过滤。这样代码在 html 解析的过程中是无法执行的
<script>alert('abcd')</script>//转前<script>alert('abcd')</script>//转后
- 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
- 通过参数化存储过程进行数据查询存取: 参数数化存储过程帮我们校验出传递给数据库的变量的类型,控制用户权限
前端面试:黑客的无尽和浏览器的反甲相关推荐
- 【前端面试知识题】- 2. 浏览器
序列号 内容 链接 1 前端知识面试题 - http&https(2022版) https://blog.csdn.net/qq_43061290/article/details/126651 ...
- 前端面试知识点大全——浏览器篇
总纲:前端面试知识点大全 目录 1.浏览器工作原理 2.浏览器如何解析css,如何渲染css的 2.1 构建DOM树 2.2 构建CSSOM规则树(就是css规则树) 2.3 渲染阻塞 2.4 构建渲 ...
- 2020最全前端面试系列(浏览器原理)(最容易忽视的面试隐藏大杀器)
2020前端面试系列(浏览器原理) 浏览器输入URL到返回页面的全过程 浏览器渲染步骤 重排和重绘 触发reflow情形 减少reflow方法 浏览器本地存储方案的比较 cookie localSto ...
- 前端面试查漏补缺--(一) 防抖和节流
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(二) 垃圾回收机制
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(三) 跨域及常见解决办法
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端面试查漏补缺--(十) 前端鉴权
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- 前端对所有文件请求添加header_【前端面试必问】浏览器缓存原理?送你满分答案...
(本文适合所1-3年的前端阅读) 原文链接: http://blog.poetries.top/2019/01/02/browser-cache/ 一.浏览器缓存基本认识 分为强缓存和协商缓存 浏览器 ...
- java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...
点击蓝字,关注我们 『浏览器从输入URL到页面渲染发生了什么』作为一个经典题目,在前端面试中高频出现,很多大厂的面试都会从这个面试题出发,考察候选人对知识的掌握程度,这其中涉及到了网络.操作系统.We ...
最新文章
- Spring Cloud Alibaba 系统保护 - 限流与熔断:Sentinel 在项目中的最佳实践
- wxpython基本控件-静态文本控件
- standard python venv module_python 在venv中报错 ModuleNotFoundError: No module named 'MySQLdb'
- 蓝牙小电池图标_丽声小百科 | 乐趣助听器如何连接iPhone手机?
- 组合内容_剑与远征:亚龙组合成型,新的更新内容,比以前更强了?
- ae正在发生崩溃_AE错误:正在发生崩溃的解决方法,原创问题解决方案
- java中的关键字有哪些_Java关键字有哪些?
- 看完这篇垃圾回收,和面试官扯皮没问题了
- 监听文件变化并自动运行 npm script
- vSphere vSAN 入门
- 遍历删除List中的元素,会报错? 用iterator.remove() 完美解决
- vscode 背景图片的设置
- 新版UI切片源码 m3u8云切片程序PHP视频切片转码系统易语言源码 云转码工具源码 代码完全开源
- JS实现双十一倒计时抢购效果
- 40行代码的Python爬虫案例:虎牙-王者荣耀主播的人气排行
- 请问蓝牙设备如何测试?
- 离散数学-代数系统4-同构
- 极客日报:《英雄联盟》回应服务器崩了:官方直接回退了旧版本;Deno 1.19 发布|极客头条
- 在Excel数据最后一行下面写入数据的一种方法
- 竟可打通了Python和Excel,还能自动生成代码,这个插件绝了
热门文章
- Python中单引号,双引号,三引号
- java接口能定义非抽象方法吗_接口中只能定义常量和抽象方法,对么
- WPF 使用Path绘制几何图形
- 黒衣の刀使い(イスカ) / 黑刀(异时层会长)
- 如何在vue项目中设置首页
- 200万日本男性首选的黑科技太空裤!首创式“枪弹分离”,不仅保暖,关键是舒服!!...
- ubuntu使用deepin-wine和wine运行windows系统(安装qq,weixin等解决方案)
- 网小鱼Java的bug小集锦0014
- 动态SQL语句的语法
- 重磅发布!2020上半年数据分析人才及CDA持证人行业报告