前端工程师必须要掌握的web安全知识

前言

介绍了常见的几种web安全问题,如果想详细的学习web安全知识,给大家推荐3本书:

XSS

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

比较常见的攻击方式之一:可以在携带url参数,跳转到ejs,php,jsp等模版文件里可以发起攻击。

危害
  • 盗取用户的cookie
  • 修改网页内容
  • 网站挂马
  • 利用网站重定向
  • XSS蠕虫
防范措施
  • CSP   内容安全策略(CSP,Content Security Policy)是一个附加的安全层,用于帮助检测和缓解某些类型的攻击。包括跨站脚本攻击和数据注入等。

CSP的本质就是建立白名单,开发者明确告诉浏览器,可以加载和执行哪些外部资源。我们只需要配置规则,如何防范是浏览器自动实现的。

Content-Security-Policy: default 'self'
Content-Security-Policy: img-src https://*
Content-Security-Policy: child-src 'none 

可以在后端代码中添加。例如nginx 或者nodejs代码中。

  • 转义字符 第二种方式就是增加转义,script等标签在转义后,无法在html页面进行加载。我们来看下转义后的变化:
encodeURI('<script>')
>>> "%3Cscript%3E" 
  • 标签黑名单
  • 标签白名单
  • HttpOnly Cookie   response.addHeader(“Set-Cookie”, “uid=112; Path=/; HttpOnly”)

通过后端设置一个前端无法操作的cookie,在发送请求的时候自动带上。

CSRF

跨站请求伪造(Cross-Site Request Forgery),利用用户已登陆的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

一种可能的攻击步骤如下:

1,用户登陆网站A,在本地记录cookie

2,在未推出登陆的情况下(cookie还在本地),点击了恶意网站B的链接

3,网站B的链接发出了一个网站a的请求,浏览器自动带上了网站a的cookie,于是请求发送成功。

4,最后导致一系列不好的结果。

危害

在用户完全不知情的情况下,发送各种非法操作

防御手段
  • Referer Check 验证HTTP请求的Referer字段,根据http协议,在http请求头中有一个字段叫做Referer,记录了HTTP请求的来源地址。当来源地址和网站地址不一致时,就不能得到正确的请求。 但是这种方法有一定的缺陷,浏览器并不是任何时候都能够获取到Referer,很多时候,浏览器为了保护用户隐私,限制了Referer的发送。在某些情况下,浏览器不会发送Referer,比如从https跳转到http,出于安全的考虑,也不会发送Referer。* anti CSRF TokenCSRF 为什么能请求成功呢?其本质原因是重要请求的所有参数都可以被攻击者猜到。 预测出URL的所有参数,才能成功的进行一个伪造的请求。 因此,出于这个原因,我们可以想到一个解决方案,就是把参数加密,或者添加一些随机参数,从而让攻击者无法猜到参数值。这个随机参数就是token。
点击劫持

所谓的点击劫持,就是使用视觉欺骗的手段,实现网络攻击。 常见的攻击手段: 攻击者将被攻击的网站,通过iframe的形式,放入自己的网站。同时将自己的网站设置透明的蒙层,用户在不知情的情况下,点击了透明蒙层上的按钮。从而实现网络攻击。

防御

1, frame busting 通过一段js代码,禁止iframe的嵌套:

if(top.location != self.location) {top.location=self.location
} 

但是这段代码有可能会被绕过。 此外,HTML5中iframe的sandbox属性,IE中iframe的security属性,都可以限制iframe中js脚本的执行,从而使得frame busting失效。

2, X-Frame-Options 专门为防御点击劫持而生的请求头。 X-Frame-Options三个参数:

1、DENY

表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。

2、SAMEORIGIN

表示该页面可以在相同域名页面的frame中展示。

3、ALLOW-FROM uri

表示该页面可以在指定来源的frame中展示。

SQL注入

常见的一个sql注入的例子: 当我们向后端查询查询username = 'zhangsan’的用户。 暗示在前端传递参数的时候输入框输入的不是

zhangsan

,而是

zhangsan’ or ‘1’ = '1

于是拼装后的sql是

SELECT *
FROM USER
WHERE username = 'zhangsan' or '1' = '1' 

最后的结果就是会查出所有的username。

防御

使用预编译语句:

SELECT * 
FROM user
WHERE username = ? 

这样,用户填入的参数,实际上就会当成一个字符串填入?的位置。不会对sql语句的结构产生变化。接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值