前端网络安全问题_前端网络安全相关知识

这是预防XSS攻击窃取⽤户最有效的防御⼿段。Web应 ⽤程序在设置时,将其属性设为,就可以避免该⽹⻚的被客户端恶意窃取,保护⽤户信息。

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")

3、CSP

内容安全策略 (CSP, ) 是⼀个附加的安全层,⽤于帮助检测和缓解某些类型的攻击,包括跨站脚本 (XSS) 和数据注⼊等攻击。 这些攻击可⽤于实现从数据窃取到⽹站破坏或作为恶意软件分发版本等⽤途。

CSP 本质上就是建⽴⽩名单,由浏览器进行拦截。开发者明确告诉浏览器哪些外部资源可以加载和执⾏。我们只需要配置规则,如何拦截是由浏览器⾃⼰实现的。我们可以通过这种⽅式来尽量减少XSS 攻击。

--: -src 'self' -所有内容均来自站点的同一个源(不包括其子域名)

--: -src 'self' *..com-允许内容来自信任的域名及其子域名 (域名不必须与CSP设置所在的域名相同)

--: -src xxxx.com-该服务器仅允许通过HTTPS方式并仅从xxxx.com域名来访问文档

4、对数据进行严格的输出编码:如HTML元素的编码,JS编码,CSS编码,URL编码等等

* 避免拼接 HTML;
* Vue/React 技术栈,避免使用 v-html / dangerouslySetInnerHTML

5、输入验证:比如一些常见的数字、URL、电话号码、邮箱地址等等做校验判断

6、验证码

2、CSRF

CSRF(Cross Site ),即跨站请求伪造,是⼀种常⻅的Web攻击,它利⽤⽤户已登录的身份,在⽤户毫不知情的情况下,以⽤户的名义完成⾮法操作

what is CSRF?

还是从字面上去分析,跨站还是指从一个网站指向另外一个网站,于XSS不同的是,他是请求,指我们在别的网站上发出一个请求,而这个请求是伪造出来的

⽤户已经登录了站点 A,并在本地记录了

在⽤户没有登出站点 A 的情况下(也就是 ⽣效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。

站点 A 没有做任何 CSRF 防御

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

攻击流程举例

1、受害者登录 a.com,并保留了登录凭证(Cookie)
2、攻击者引诱受害者访问了b.com
3b.coma.com 发送了一个请求:a.com/act=xx浏览器会默认携带a.com的Cookie
4a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
5a.com以受害者的名义执行了act=xx
6、攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

攻击类型

1、ET型:如在页面的某个 img 中发起一个 get 请求
2、POST型:通过自动提交表单到恶意网站
3、链接型:需要诱导用户点击链接

CSRF危害

* 利⽤⽤户登录状态
* ⽤户不知情
* 完成业务请求
* 盗取⽤户资⾦(转账,消费)
* 冒充⽤户发帖背锅
* 损害⽹站声誉

防御CSRF

CSRF通常从第三方网站发起,被攻击的网站无法防止攻击发生,只能通过增强自己网站针对CSRF的防护能力来提升安全性。

1、禁⽌第三⽅⽹站带Cookie - 有兼容性问题
Samesite Cookie属性:
Google起草了一份草案来改进HTTP协议,那就是为Set-Cookie响应头新增Samesite属性
它用来标明这个 Cookie是个“同站 Cookie”,同站Cookie只能作为第一方Cookie,不能作为第三方Cookie
Samesite 有两个属性值,Strict 为任何情况下都不可以作为第三方 Cookie ,Lax 为可以作为第三方 Cookie,但必须是Get请求
2、Referer Check - Https不发送referer
3、验证码
4、同源检测:通过Header中的Origin Header 、Referer Header 确定,但不同浏览器可能会有不一样的实现,不能完全保证
5、CSRF Token 校验:将CSRF Token输出到页面中(通常保存在Session中),页面提交的请求携带这个Token,服务器验证Token是否正确
6、双重cookie验证:
流程:
步骤1:在用户访问网站页面时,向请求域名注入一个Cookie,内容为随机字符串(例如csrfcookie=v8g9e4ksfhw)
步骤2:在前端向后端发起请求时,取出Cookie,并添加到URL的参数中(接上例POST https://www.a.com/comment?csrfcookie=v8g9e4ksfhw)
步骤3:后端接口验证Cookie中的字段与URL参数中的字段是否一致,不一致则拒绝。
优点:
1)、无需使用Session,适用面更广,易于实施。
2)、Token储存于客户端中,不会给服务器带来压力。
3)、相对于Token,实施成本更低,可以在前后端统一拦截校验,而不需要一个个接口和页面添加。
缺点:
1)、Cookie中增加了额外的字段。
2)、如果有其他漏洞(例如XSS),攻击者可以注入Cookie,那么该防御方式失效。
3)、难以做到子域名的隔离。
4)、为了确保Cookie传输安全,采用这种防御方式的最好确保用整站HTTPS的方式,如果还没切HTTPS的使用这种方式也会有风险。

3、 安全what is 劫持?

1、嵌入第三方 iframe 会有很多不可控的问题,同时当第三方 iframe 出现问题或是被劫持之后,也会诱发安全性问题
2、点击劫持
点击劫持是⼀种视觉欺骗的攻击⼿段。
攻击者将需要攻击的⽹站通过iframe嵌套的⽅式嵌⼊⾃⼰的⽹⻚中,并将 iframe 设置为透明,在⻚⾯中透出⼀个按钮诱导⽤户点击。
3、禁止自己的 iframe 中的链接外部网站的JS

预防方案:

1、为 iframe 设置 sandbox 属性,通过它可以对iframe的行为进行各种限制,充分实现“最小权限“原则
2、服务端设置 X-Frame-Options Header头,拒绝页面被嵌套,X-Frame-OptionsHTTP 响应头中用来告诉浏览器一个页面是否可以嵌入 <iframe> 中
eg.X-Frame-Options: SAMEORIGIN
SAMEORIGIN: iframe 页面的地址只能为同源域名下的页面
ALLOW-FROM: 可以嵌套在指定来源的 iframeDENY: 当前页面不能被嵌套在 iframe3、设置 CSPContent-Security-Policy 请求头
4、减少对 iframe 的使用

ctx.set('X-FRAME-OPTIONS', 'DENY')

JS方式

<head>
    <style id="click-jack">
    html {
        display: none !important;
    }
    style>
head>
<body>
    <script>
    if (self == top) {
        var style = document.getElementById('click-jack')
        document.body.removeChild(style)
    } else {
        top.location = self.location
    }
    script>
body>

4、SQL 注入

sql是我们学习数据库的一种语言,而注入就代表是从前端对数据库下手

what is sql注入?

就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗数据库服务器执行恶意的SQL命令,从而达到和服务器进行直接的交互

防御措施

其实防御起来很简单,每个语言都提供了不同的方式,但是原理就是不进行字符串拼接,而是用占位符

1、严格限制Web应⽤的数据库的操作权限**,给此⽤户提供仅仅能够满⾜其⼯作的最低权限,从⽽最⼤限度的减少注⼊攻击对数据库的危害
2、对进⼊数据库的特殊字符(',",\,<,>,&,*,; 等)进⾏转义处理,或编码转换**。基本上所有的后端语⾔都有对字符串进⾏转义处理的⽅法,⽐如 lodash 的 lodash._escapehtmlchar库。
3、后端代码检查输⼊的数据是否符合预期**,严格限制变量的类型,例如使⽤正则表达式进⾏⼀些匹配处理。

接下来这几个我们也做个了解:

5、OS命令注⼊

OS命令注⼊和SQL注⼊差不多,只不过SQL注⼊是针对数据库的,⽽OS命令注⼊是针对操作系统的。OS命令注⼊攻击指通过Web应⽤,执⾏⾮法的操作系统命令达到攻击的⽬的。只要在能调⽤Shell函数的地⽅就有存在被攻击的⻛险。倘若调⽤Shell时存在疏漏,就可以执⾏插⼊的⾮法命令。

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

如果参数是

https://github.com/xx/xx.git && rm -rf /* &&

注意:一旦你执行了上述“rm -rf /” 或者“rm -rf /*”命令,会删除Linux根目录下的所有文件,直接导致服务器瘫痪

6、请求劫持

DNS劫持

顾名思义,DNS服务器(DNS解析各个步骤)被篡改,修改了域名解析的结果,使得访问到的不是预期的ip

网络安全学习路线图(思维导图)

网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。

1. 网络安全视频资料

2. 网络安全笔记/面试题

3. 网安电子书PDF资料

如果你向网安入门到进阶的全套资料,我都打包整理好了,需要学习的小伙伴可以V我找我拿~

学网络安全/学黑客,零基础资料整理来啦~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值