0


绿盟科技面试题

绿盟科技面试复盘


文章目录


前言

提示:这篇文章是基于网站和文档的集中总结,但看的网站有些太多了,如果你需要转载网站标注,请联系我:

一、个人视频面试问题

1. 简历上项目问题
2. 管理系统项目问题
3. 基于什么语言
4. 数据库连接问题
5. 爬虫项目问题,遇到问题
6. 访问头
7. 反爬
8. 多线程爬取是否用到
9. flask项目问题
10. 安全问题XSS,CSRF
11. docker是否了解
12. Linux命令,Git命令
13. http协议问题(DNS之类)
14. 从你访问百度网址 连接过程 有什么协议TCP UDP
15. 算法问题_排序算法

二、WEB安全相关

XSS攻击(跨站脚本攻击)

1. 概念

XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。

2. 作用

a. 盗用劫持cookie
b. 删除,恶意篡改数据
c. 劫持用户WEB行为
d. 刷广告,刷流量,破坏网上数据

3. 原理

注入恶意JavaScript脚本
XSS的原理是WEB应用程序混淆了用户提交的数据和JS脚本的代码边界,导致浏览器把用户的输入当成了JS代码来执行。XSS的攻击对象是浏览器一端的普通用户。
● 攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。
● 诱使受害者打开受到攻击的服务器URL。
● 受害者在Web浏览器中打开URL,恶意脚本执行。

4. 类型

a. 反射型

反射型XSS,又称非持久型XSS。也就是攻击相当于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行响应的脚本。

b. 存储型

存储型XSS,也就是持久型XSS。攻击者上传的包含恶意js脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含了该恶意js脚本,这样会导致所有访问该网页的浏览器解析执行该恶意脚本。这种攻击类型一般常见在博客、论坛等网站中。

c. DOM型

DOM,全称是Document ObjectModel,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构和样式。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞,而且不需要与服务器进行交互。
客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

5. 防御措施

a. 对输入(和URL参数)进行过滤,对输出进行编码。

对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分XSS攻击。

为了避免反射式或存储式的XSS漏洞,最好的办法是根据HTML输出的上下文(包括:主体、属性、JavaScript、CSS或URL)对所有不可信的HTTP请求数据进行恰当的转义。
在客户端修改浏览器文档时,为了避免DOM型XSS攻击,最好的选择是实施上下文敏感数据编码。

b. 使用内容安全策略(CSP)是对抗XSS的深度防御策略。

CSP 的主要目标是减少 XSS 攻击。 CSP
本质上是建立白名单,规定了浏览器只能够执行特定来源的代码;即使发生了xss攻击,也不会加载来源不明的第三方脚本
CSP通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。一个CSP兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他脚本
(包括内联脚本和HTML的事件处理属性)。

CSRF攻击(跨站请求伪造)

1. 作用

攻击者盗用了你的身份,以你的名义发送恶意请求。
CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…
造成的问题包括:个人隐私泄露以及财产安全。

2. 原理

1:用户C登录信任网站A
2:验证通过,用户C产生一个网站A的Cookie
3:用户C没有退出网站A,Cookie依然保留,去访问危险网站B
4:危险网站B带着用户C的Cookie去访问信任网站A,发出request请求
5:信任网站A不知道危险网站B的请求是谁发送的,由于浏览器带着用户C的Cookie,网站A会根据用户权限去处理B的请求,这样B就可以模拟用户操作
在这里插入图片描述

3. 防御

CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。

(1)验证 HTTP Referer 字段
(2)在请求地址中添加 token 并验证(FLask使用WTF表单验证)
(3)在 HTTP头中自定义属性并验证

SQL注入

1. 原理

Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,

再在后台 Sql服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

当我们访问动态网页时, Web 服务器会向数据访问层发起Sql 查询请求,如果权限验证通过就会执行 Sql 语句。
这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

2. 危害

  1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  2. 网页篡改:通过操作数据库对特定网页进行篡改。
  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  5. 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  6. 破坏硬盘数据,瘫痪全系统。

3. 注入类别

1. 参数型注入

a. 数字型注入
b. 字符型注入

2. 其它类型注入

  1. 提交方式注入
  • GET
  • POST
  • Cookie
  • HTTP
  • Header
  1. 是否回显注入
  • 显注:联合注入,报错注入
  • 盲注入:布尔盲注,时间盲注

4. 防御

  1. 对输入进行严格的转义和过滤
  2. 使用参数化(Parameterized):目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!
  3. PDO预处理 (Java、PHP防范推荐方法:)
  4. 通过WAF设备启用防SQL Inject注入策略(或类似防护系统)
  5. 云端防护(如阿里云盾)

对称加密与非对称加密

1. 对称加密

a. 概念:指加密和解密使用同一个秘钥,只有一个秘钥作为私钥
b. 常见对称加密算法
DES;AES;3DES

2. 非对称加密

a. 概念:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥.
ⅰ. 公钥加密的信息,只有私钥才能解密.私钥加密的信息,只有公钥才能解密.
b. 常见非对称加密算法
ⅰ. RSA;ECC;背包算法

3. 对称加密和非对称加密的区别

a. 对称加密:加解密效率高,耗时短,适合数据较长时使用;秘钥可以自定义
b. 非对称加密:只能通过私钥来推解公钥,安全性较高,速度较慢

SLL

1. 概念:安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。

2. 工作原理(三个协议)

a. 握手协议

ⅰ. 握手目的
  1. 客户端与服务器达成一致算法
  2. 确定一组由算法使用加密秘钥
  3. 对客户端进行认证
ⅱ. 握手过程
  1. 客户端发送加密算法给服务器
  2. 服务器返回选中加密算法,发送含服务器公用密钥证书
  3. 客户端验证证书,用公用密钥产生随机密码,再进行加密发送。
  4. 客户端和服务器计算密钥
  5. 客户端发送握手消息MAC值
  6. 服务器返回MAC值

在这里插入图片描述

b. 记录协议

c. 警报协议

3. 加密方式:对称加密和非对称加密

4. 加密流程

在这里插入图片描述

A:B,你好,我想向你发一段消息,请你把你的公钥给我
B:好的,我的公钥是:xxxxxxx。
A:好的,我收到了你的公钥,我给你发送的消息经过你的公钥加密后是:yyyyyyy。
B:收到,我现在用我的密钥来解密看看。

操作系统—进程;线程;协程

1. 概念

a. 进程:

ⅰ. 进程是程序的一个运行实例,是正在运行程序的一种抽象
ⅱ. 进程是最小的资源管理单元

b. 线程:

ⅰ. 线程是最小的执行单元

c. 协程:

ⅰ. 是一种比线程更加轻量级的存在
ⅱ. 是一个可以在某个地方挂起的特殊函数,并且可以重新在挂起处继续运行。所以说,协程与进程、线程相比,不是一个维度的概念。

2. 进程和线程区别

  1. 根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。
  2. 从属关系不同:进程中包含了线程,线程属于进程。
  3. 开销不同:进程的创建、销毁和切换的开销都远大于线程。
  4. 拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。
  5. 控制和影响能力不同:子进程无法影响父进程,而子线程可以影响父线程,如果主线程发生异常会影响其所在进程和子线程。
  6. CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。
  7. 操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。

3. 多进程和多线程区别

  a. 线程是进程的子集(部分),一个进程可能由多个线程组成。
  b. 多进程的数据是分开的、共享复杂,需要用IPC,但同步简单。
  c. 多线程共享进程数据,共享简单,但同步复杂。
4. 线程池
  a. 优点
    ⅰ. 降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。
    ⅱ. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
    ⅲ. 增加线程的可管理型。线程是稀缺资源,使用线程池可以进行统一分配,调优和监控。

计算机网络—http与https

1. http

a. http组成

ⅰ. 一个HTTP请求由请求行、请求头、空行和请求数据4个部分组成。
ⅱ. 请求头由三部分组成,请求方法、请求URL(不包括域名)、HTTP协议版本。   

b. http1.0和http1.1区别

ⅰ. HTTP1.0:支持GET、POST、HEAD三种HTTP请求方法。HTTP1.0 每次请求都需要建立新的TCP连接,连接不能复用。
ⅱ. HTTP 1.1:持久连接,支持以管道方式同时发送多个请求,以降低线路负载,提高传输速度。HTTP1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法

2. https

3. http和https区别

a. HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
b. HTTP是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
c. HTTP 和 HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d. HTTP 的连接很简单,是无状态的。HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

数据库的使用

SQL语句优化

用具体字段不用select *
避免在where子句用or连接
用varchar代替char
用数值代替字符串类型
使用limit语句
使用explain语句分析

总结

寄了
标签: flask 算法 mysql

本文转载自: https://blog.csdn.net/WD_MX/article/details/127992008
版权归原作者 XMD_BLOG 所有, 如有侵权,请联系我们删除。

“绿盟科技面试题”的评论:

还没有评论