前端安全—常见的攻击方式及防御方法

Cookie挟持

HTTP是无状态的协议,为了维持和跟踪用户的状态,引入了CookieSessionCookie包含了浏览器客户端的用户凭证,相对较小。Session则维护在服务器,用于维护相对较大的用户信息。可以把Cookie当成密码,而Session是保险柜。由于HTTP是明文传输,Cookie很容易被盗取,如果被盗取,别人就可以冒充你的身份,打开你的保险柜,获取你的信息,动用你的资金,这是很危险的。

Cookie和Session的关系可以看这篇:浅谈session和cookie的关系

1.危害

盗取cookie信息,冒充他人身份,盗取信息。

2.防御

  • cookie添加HttpOnly属性,该属性设置后,只能在http请求中传递,在脚本中,document.cookie无法获取到该cookie值,对XSS攻击有防御作用,但对网络拦截还是会泄露。
  • cookie中添加校验信息,这个校验信息和当前用户外置环境有些关系,比如ipuser agent等有关.这样当cookie被人劫持冒用时,在服务器端校验的时候,发现校验值发生了变化,因此会要求用户重新登录,可以规避cookie劫持。
  • cookiesession id的定时更换,让session id按一定频率变换,同时对用户而言,该操作是透明的,这样保证了服务体验的一致性。

XSS跨站脚本攻击

攻击者在web页面恶意插入HTMLscript标签,当用户浏览该页面时,恶意代码就会被执行,从而达到攻击的目的。XSS利用的是用户对指定网站的信任

1.类型

  • 反射型(非持久):攻击者事先制作好攻击链接,需要欺骗用户自己去点击链接才能触发XSS代码,所谓反射型XSS就是将恶意用户输入的js脚本,反射到浏览器执行。* 储存型(持久型):会把攻击者的数据储存到服务端,攻击行为将伴随攻击数据一直存在,每当用户访问该页面就会触发代码执行。* DOM型:基于文档对象模型的漏洞。 最经典的存储型XSS漏洞是留言板,当用户A在留言板留言一段JS代码<script>alert("run javascript");</script>,后端未经过滤直接存储到数据库,当正常用户浏览到他的留言后,这段JS代码就会被执行,可以借此来盗取cookie。### 2.危害

  • 盗取网页浏览中的cookie值,盗用cookie实现无密码登录,盗取用户信息。

  • 劫持访问,实现恶意跳转。

  • 配合CSRF攻击完成恶意请求。

3.防御方法

  • 标签过滤,如<script><img><a>标签等
  • 编码,对字符<>&"'+/等进行转义。
  • cookie防盗,将cookie设置为http-only,js脚本将无法读取到cookie信息。
  • 纯前端渲染,明确innerTextsetAttributestyle,将代码与数据分隔开。
  • 避免不可信的数据拼接到字符串中传递给这些API,如DOM中的内联事件监听器,locationonclickonloadonmouseover等,<a>标签的href属性,JavaScripteval()setTimeout()setInterval()等,都能把字符串作为代码运行。

CSRF跨站点请求伪造

顾名思义就是通过伪造连接请求,在用户不知情的情况下,让用户以自己的身份来完成非本意操作的攻击方法。CSRF利用的是网站对浏览器的信任

1.原理

1.用户C浏览并登录信任网站A,产生cookie
2.用户C未退出网站A,在同一个浏览器危险访问网站B
3.网站B的页面存有一些攻击性的代码,会发出访问A的请求
4.浏览器收到请求后,在用户不知情的情况下携带cookie访问网站A
5.A不知道请求是谁发的,浏览器会带上用户的cookie,所以A会根据用户的权限处理B发出的请求。这样就达到了攻击的目的。

2.防御

  • 验证码:对敏感操作加入验证码,强制用户与网站进行交互
  • Cookie设置SameSite属性。该属性表示Cookie不随着跨域请求发送,可以很大程度减少CSRF的攻击,但是该属性目前并不是所有浏览器都兼容。
  • 使用POST请求,避免使用GET,降低攻击风险,post请求攻击方需要构造一个form表单才可以发起请求,比get请求(imgsrca标签的href等等)的攻击方式复杂了一些,相对来说能降低风险,但不能阻止。
  • 检查HTTP中的referer字段,该字段记录了HTTP请求的来源地址
  • 在请求头中加入token验证字段,浏览器并不会自动携带Token去请求,且Token可以携带一段加密的jwt用作身份认证,这样进行CSRF的时候仅传递了cookie,并不能表明用户身份,网站即拒绝攻击请求。
  • http中自定义属性并验证。

点击挟持

  • ClickJacking点击劫持当访问某网站时,利用CSS将攻击者实际想让你点击的页面进行透明化隐藏,然后在页面后显示 一些东西诱导让你点击,点击后则会在用户毫不知情的情况下做了某些操作,这就是点击劫持ClickJacking。案例:当我们点击弹窗右上角的"X"想关闭弹窗事,跳转到其他页面。

  • iframe覆盖第三方网站通过iframe内嵌某一个网站,并且将iframe设置为透明不可见,将其覆盖在其他经过伪装的DOM上,伪装的可点击DOM(按钮等)与实际内嵌网站的可点击DOM位置相同,当用户点击伪装的DOM时,实际上点击的是iframe中内嵌的网页的DOM从而触发请求操作。

防御

  • Javascript禁止内嵌:当网页没有被使用iframe内嵌时,top和window是相等的;当网页被内嵌时,top和window是不相等的;可以在本网站的页面中添加如下判断:```

* 一些辅助手段,比如添加验证码,提高用户的防范意识

中间人攻击(MITM攻击)
-------------

中间人攻击(man-in-the-middle attack, abbreviated to MITM),简单的讲,就是黑客悄悄的躲在通信双方之间,窃听甚至篡改通信信息。而通信双方的对方已经变成中间人了,不是原本的通信对方,但它们并不知道消息已经被截获甚至篡改了。

<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3fa2d76503484c119873368d220cf842~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style="margin: auto" />

[Https协议简析及中间人攻击原理](https://link.juejin.cn/?target=https%3A%2F%2Fwww.cnblogs.com%2Fgordon0918%2Fp%2F5237717.html "https://www.cnblogs.com/gordon0918/p/5237717.html")

URL漏洞跳转
-------

定义:借助未验证的`URL`跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

### 1.原理

原理:黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。安全意识低的用户点击后,经过服务器或者浏览器解析后,跳到恶意的网站中。

<img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aa4ef150fdd94d53afb6f6fc8e43e5b7~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style="margin: auto" />

恶意链接需要进行伪装,经常的做法是熟悉的链接后面加上一个恶意的网址,这样才迷惑用户。

<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0d8be4b348a04a5faa9654ac92a14f4a~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style="margin: auto" />

### 2.防御

* 检查`HTTP`中的`referer`字段,该字段记录了`HTTP`请求的来源地址,可以验证该`URL`的有效性
* 在请求头中加入`token`验证字段,浏览器并不会自动携带`Token`去请求,且`Token`可以携带一段加密的`jwt`用作身份认证,这样进行

SQL注入
-----

`SQL`注入是一种常见的`Web`安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

### 1.原理

我们先举一个万能钥匙的例子来说明其原理: <img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/291f7edc888f45f0895606a27e1440fa~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style="margin: auto" />

后端的 SQL 语句可能是如下这样的:

SELECT * FROM user WHERE username=‘admin’ AND psw=‘password’


但是恶意攻击者用奇怪用户名将你的`SQL`语句变成了如下形式:

SELECT * FROM user WHERE username=‘admin’ --’ AND psw=‘xxxx’


在`SQL`中, `' --`是闭合和注释的意思,-- 是注释后面的内容的意思,所以查询语句就变成了:

SELECT * FROM user WHERE username=‘admin’


所谓的万能密码,本质上就是SQL注入的一种利用方式。

**一次SQL注入的过程包括以下几个过程**:

* 获取用户请求参数
* 拼接到代码当中
* SQL语句按照我们构造参数的语义执行成功

**SQL注入的必备条件:1.可以控制输入的数据2.服务器要执行的代码拼接了控制的数据**。

<img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7da07f00dbfc47a6898aebed23e2cc8c~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image) 我们会发现SQL注入流程中与正常请求服务器类似,只是黑客控制了数据,构造了SQL查询,而正常的请求不会SQL查询这一步,**SQL注入的本质:数据和代码未分离,即数据当做了代码来执行。*" style="margin: auto" />

### 2.危害

* 获取数据库信息* 管理员后台用户名和密码* 获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息……* 整个数据库:脱裤
* 获取服务器权限* 植入Webshell,获取服务器后门* 读取服务器敏感文件### 3.如何防御

* **严格限制Web应用的数据库的操作权限**,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害
* **后端代码检查输入的数据是否符合预期**,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
* **对进入数据库的特殊字符(',",,<,>,&,*,; 等)进行转义处理,或编码转换**。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。
* **所有的查询语句建议使用数据库提供的参数化查询接口**,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query 方法中的 ? 占位参数。

OS命令注入攻击
--------

OS命令注入和SQL注入差不多,只不过**SQL注入是针对数据库**的,而**OS命令注入是针对操作系统**的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

命令注入攻击可以向`Shell`发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。

#### 1.原理

<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5d34a671567f4497877485ba0757d087~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image" style="margin: auto" />

黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,最后web应用程序将执行的结果输出到响应页面中。

我们通过一个例子来说明其原理,假如需要实现一个需求:用户提交一些内容到服务器,然后在服务器执行一些系统命令去返回一个结果给用户

// 以 Node.js 为例,假如在接口中需要从 github 下载用户指定的 repo
const exec = require(‘mz/child_process’).exec;
let params = {/* 用户输入的参数 */};
exec(git clone ${params.repo} /some/path);


如果 `params.repo` 传入的是 `https://github.com/admin/admin.github.io.git` 确实能从指定的 git repo 上下载到想要的代码。但是如果 `params.repo` 传入的是 `https://github.com/xx/xx.git && rm -rf /* &&` 恰好你的服务是用 root 权限起的就糟糕了。

#### 2.如何防御

* 后端对前端提交内容进行规则限制(比如正则表达式)。
* 在调用系统命令前对所有传入参数进行命令行参数转义过滤。
* 不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如 Node.js 的 `shell-escape npm`包

t && rm -rf /* &&` 恰好你的服务是用 root 权限起的就糟糕了。

#### 2.如何防御

* 后端对前端提交内容进行规则限制(比如正则表达式)。
* 在调用系统命令前对所有传入参数进行命令行参数转义过滤。
* 不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如 Node.js 的 `shell-escape npm`包

参考文档:[常见六大Web安全攻防解析](https://link.juejin.cn/?target=https%3A%2F%2Fwww.cnblogs.com%2Ffundebug%2Fp%2Fdetails-about-6-web-security.html "https://www.cnblogs.com/fundebug/p/details-about-6-web-security.html")## 题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

2023届全国高校毕业生预计达到1158万人,就业形势严峻;

国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20230809162658551.png&pos_id=img-QZHnPtKA-1704208625815)

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

### **网络安全行业特点**

1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

![img](https://img-blog.csdnimg.cn/img_convert/d5f06d6b9945fd6e8a5f92a0198e5446.png)

###### 2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
![img](https://img-blog.csdnimg.cn/img_convert/9cf857398f52a97ff49d437ac5fe690a.png)

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

###### 1.学习路线图

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

#### 1.学习路线图

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CDesktop%5C%E7%BD%91%E5%AE%89%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%5C%E4%BA%AB%E5%AD%A6%E9%A6%96%E5%88%9B%E5%B9%B4%E8%96%AA40W%2B%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B%E5%B8%88%20%E9%9D%92%E9%93%9C%E5%88%B0%E7%8E%8B%E8%80%85%E6%8A%80%E6%9C%AF%E6%88%90%E9%95%BF%E8%B7%AF%E7%BA%BFV4.0.png&pos_id=img-Gfc6lMTX-1704208625830)

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

#### 2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CDesktop%5C%E7%BD%91%E5%AE%89%E8%B5%84%E6%96%99%E6%88%AA%E5%9B%BE%5C%E8%A7%86%E9%A2%91%E8%AF%BE%E4%BB%B6.jpeg&pos_id=img-xsI1HE0y-1704208625833)

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里**👉**[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw)

#### **3.技术文档和电子书**

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CDesktop%5C%E7%BD%91%E5%AE%89%E8%B5%84%E6%96%99%E6%88%AA%E5%9B%BE%5C%E6%8C%96%E6%8E%98%E6%96%87%E6%A1%A3%20(1&pos_id=img-rqrWXS9E-1704208625869).png)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里**👉**[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw)

#### 4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里**👉**[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw)

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


![img](https://img-blog.csdnimg.cn/img_convert/da1274937756ef025cecc0439519a3d4.png)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里**👉**[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>