「2022」打算跳槽的,必知的 WEB 安全面试题

古人学问无遗力,少壮工夫老始成。这篇文章主要讲述「2022」打算跳槽的,必知的 WEB 安全面试题相关的知识,希望能为你提供帮助。
Hi,我是前端人,今日与君共勉!废话不多说,直接上干货!1、你对 WEB 安全的理解?
互联网发展迅速,现在的 web 不再是以前的简单网页,除了常见的电商购物平台、手机转账、银行系统之外,物联网技术的发展,不仅让智能家居走进了生活,也促进了医疗、物流等行业的发展,安全问题逐渐也成为大家比较关心的问题。
作为一个前端程序员最关心的也就是 web 安全喽,较为常见且危害较大的有 XSS跨站脚本gongji、SQL 注入、CSFR 跨站请求伪造等gongji方式。我们需要更好的理解它们的恶意gongji原理,才能更好的防御gongji。

2、XSS 跨站脚本gongji
XSS 是 Cross Site Scripting 的缩写,为了与 CSS 做区分,所以叫做 XSS 。
XSS gongji主要是 web 页面被植入了恶意的 script 代码,当用户访问页面的时候,嵌入的恶意代码自动执行,从而达到gongji的效果。XSS 类型可分为三种:

  • 反射型 XSS
  • 存储型 XSS
  • 文档型 XSS
反射型 XSS 是发出网络请求时,恶意gongji代码出现在 url 中,作为输入内容提交给服务器,服务器再返回给浏览器,浏览器执行 XSS 代码,这个过程像是一次反射,所以叫做反射型 XSS gongji。
http://www.xxx.com?q=< script> alert("恶意脚本")< /script>

http://www.xxx.com?n=< img sec="1 onerror=alert(恶意代码)">

存储型 XSS 是提交的 XSS 代码存储到服务器的数据库、内存或文件系统内,下次请求目标页面时不再提交 XSS 代码。常见于用户输入的地方。
文档型 XSS 不会经过服务器,作为中间人的角色,在数据传输过程中劫持到网络数据包,然后修改里面的 html 文档。
XSS 危害较多,常见的是盗用账号、盗取商业价值信息等。所以我们就需要做一定的防御措施来保障用户的权益,针对以上三种gongji方式,对应的也有三种防御措施,分别为:
  • 客户端和服务端进行转义编码
< script> alert(恶意代码)< /script>

转义编码后编辑器又会给你重新处理,不知道的同学可以自己试试!
  • 过滤掉危险节点,如 script、style、link、iframe 。
  • 利用 CSP
Content Security Policy 内容安全策略,可以规定当前网页可以加载的资源的白名单,从而减少网页受到 XSS gongji的风险。
3、CSRF 怎么防御知道吗?
CSFR 是 cross site request forgery ,中文名叫跨站请求伪造。也被称为:one click attack/session riding,缩写为:CSRF / XSRF。
CSRF 主要是gongji者盗用用户的身份,以用户的名义进行恶意操作,容易造成个人隐私泄露以及财产安全问题,所以 CSRF 的防御措施不能少,可以从服务端和客户端两方面着手,它的防御方式有以下几种:
  • 检查 http 头部的 referer 信息
  • 使用一次性令牌
  •   关键操作使用 POST 请求
  • 使用验证码
具体的防御措施内容为:
1> 、检查 http 头部的 referer 信息
referer 包含在 http 请求头内,表示请求接口的页面来源,服务端通过检查 referer 信息,发现来源于外域时拦截请求,阻止不明请求,一定程度上可以减少gongji。
2> 、使用一次性令牌
使用一次性令牌做身份标识,heike是无法通过跨域拿到一次性令牌的,所以服务端可以通过判断是否携带一次性令牌,可以排除一部分非法操作者。
3> 、 关键操作使用 POST 请求
敏感操作使用 POST 请求,主要是为了防止用户敏感信息出现在 url 中,容易泄露重要信息。
4> 、使用验证码
CSRF gongji基本都是出现在用户不知道的情况下,在用户无感的情况下偷偷发送网络请求,如果使用验证码,需要每次进行重要操作时进行验证,从而简单有效的防御了 CSRF gongji。

4、SQL注入是啥?
所谓的 SQL 注入就是把 SQL 语句命令插入到 web 表单提交或页面请求的查询字符串,最终达到服务器执行恶意 SQL 命令。它是一种常见的 WEB 安全loudong,gongji者会利用这个loudong,可以访问或修改数据,利用潜在的数据库loudong进行gongji。
SQL 注入可以分为以下几例:
  • 数字型注入
  • 字符型注入
  • 其他类型
SQL 注入的防范措施:
  • 添加正则验证和过滤。凡是用户输入的地方,都不要信任用户的输入,需要对用户输入的内容进行正则表达式验证。
  • 敏感字段要加密。机密敏感的信息不能直接存放,需要加密或 hash 掉敏感的信息。
  • 不要使用管理员权限连接数据库。为每个应用使用单独的权限进行控制有限的数据库连接,永远不要使用管理员权限连接数据库。
  • 不能动态拼接SQL语句。可以使用参数化的 SQL 或者直接使用存储过程进行数据查询存取,但是不要动态拼接。
5、DDOS
DDOS 是 Distributed Denial of Service 的缩写,翻译为中文是分布式拒绝服务。DDOS gongji指的是借助于客户/服务器技术,将多个计算机联合起来作为gongji平台,对一个或多个目标发动 DDOS gongji,从而成倍的提高拒绝服务gongji的威力。该gongji方式主要利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
DDOS gongji通过大量合法的请求占用大量资源,以达到瘫痪网络的目的,具体的表现形式有几下几种:
  1. 通过使网络过载来干扰甚至阻断正常的网络通讯;
  2. 通过向服务器提交大量请求,使服务器超负荷;
  3. 阻断某一用户访问服务器;
  4. 阻断某服务与特定系统或个人的通讯。
6、DNS 劫持
DNS 是将网络域名对应到真实计算机能够识别的 IP 地址,以便进一步通信。DNS劫持就是当用户通过某一个域名访问站点时,被篡改的 DNS 服务器返回的是一个钓鱼网站的 IP,用户被劫持到钓鱼网站,进而泄露隐私。
7、HTTP劫持
HTTP劫持是当用户访问某个网站时,会经过运营商,运营商和黑厂勾结就能够截获请求返回的内容,并且篡改返回的内容之后再返回给用户。一般网站被劫持之后就会插入一些广告,严重的可能直接修改成钓鱼网站窃取用户信息。
防御措施:
【「2022」打算跳槽的,必知的 WEB 安全面试题】通信过程没有对对方身份进行校验以及对数据完整性进行校验,所以防止 HTTP 劫持的方法只有将内容加密,让劫持者无法pojie篡改,这样就可以防止 HTTP 劫持了。

    推荐阅读