【无标题】

安全基础面试题

**1.自我介绍
2.介绍自己常用的python库(★)
fuzzywuzzy ,字符串模糊匹配。
esmre ,正则表达式的加速器。
pyyaml ,Python版本的YAML解释器。
python-slugify ,转换Unicode为ASCII内码的slugify函数库。
unicode-slugify ,生成unicode内码,Django的依赖包。
3.介绍一下Python中的迭代器、生成器、装饰器(★)
迭代器是访问集合元素的一种方式。
一个调用返回迭代器的函数,就叫做生成器。函数中包含yield语法,这个函数就会变成生成器。
装饰器的作用在于,对已有函数,在不改变它内在封装上扩展它的功能。
4.python有哪些框架,其中出现过哪些漏洞?(★★)
flask的模板注入 模板注入和常见Web注入的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。
Django出现过目录遍历漏洞。
5.是否写过运维类或者排序脚本的工具?(★★)
6.对称加密非对称加密?(★★)
对称加密:加解密用同一密钥,密钥维护复杂 n(n-1)/2,不适合互联网传输密钥,加解密效率高。应用于加密数据。
非对称加密:公钥推不出私钥,每个用户一个非对称密钥对就可以,适合于互联网传输公钥,但是加密效率低,应用于数字签名及加密。
7.Cookies和session区别?(★)
Cookie和 Session都是客户端与服务器之间保持状态的解决方案
1),存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session存储的数据
比较安全
2),存储的数据类型不同
两者都是 key-value的结构,但针对value的类型是有差异的
cookie:value只能是字符串类型,session:value是 Object类型
3),存储的数据大小限制不同
cookie:大小受浏览器的限制,很多是是4K的大小,session:理论上受当前内存的限制,
4),生命周期的控制
cookie的生命周期当浏览器关闭的时候,就消亡了
(1)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,
(2)session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问 session,那么session生命周期被销毁

8.HTTPS和 HTTP的区别(★)
1).HTTP协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP协议传输隐私信息非
常不安全,HTTPS协议是由 SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,
要比 http协议安全。
2).https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3)、http和 https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

9.OSI的七层模型都有哪些?(★)
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选
择最适当的路径。
传输层:在源端与目的端之间提供可靠的透明数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务

10.常见的状态码有哪些?(★)
200 OK//客户端请求成功
403 Forbidden//服务器收到请求,但是拒绝提供服务
404 Not Found//请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error//服务器发生不可预期的错误

11.数据库有哪些,关系型的和非关系型的分别是哪些(★)
关系型
MySQL:3306
SQL Server:1433
Oracle:1521
DB2:5000
MongoDB:27017
非关系型
Redis:6379
Memcached:11211

12.Python3和Python2中 int 和 long的区别?(★★)
python2有非浮点数准备的int和long类型。int类型最大值不能超过sys.maxint,而且这个最大值是平台相关的。

可以通过在数字的末尾附上一个L来定义长整型,显然,它比int类型表示的数字范围更大。

python3里,只有一种整数类型int,大多数情况下,和python2中的长整型类似。

13.字符串、列表、元组、字典每个常用的方法?(★★)
字符串:索引、查找find(‘e’)、移除空白strip()、长度len()、替换replace(‘h’, ‘H’)
列表:切片[1:4]、追加append()、插入insert()、修改li[2]=”修改”、删除remove和pop
元组:索引ages[3]、切片name[0:2]、长度len()、创建tuple、删除del
字典:keys()返回包含字典所有key的列表;values()返回包含字典所有value列表;items()返回一个包含所有键值的列表;get()查看字典key对应的值;len()查看字典长度。

14.Python的可变类型和不可变类型?(★★)
可变类型:list、dict、set、可变集合
不可变类型:string、int、float、tuple、不可变集合

15.至少列举6个常用模块都有那些?(★★★)

1、sys:用于提供对解释器相关的访问以及维护,并有很强的交互功能
2、time: 时间模块
3、os:用于提供操作系统模块
4、ashlib:用于加密相关的操作
5、random:生成随机变量
6、pickle:用于python特有的类和pthon的数据类型间进行转换
7、datetime:date和time的结合体
8、re:正则表达式模块

16、re的match和search区别?(★)
re.match 从头开始匹配
re.search 匹配包含
match与search函数功能一样,match匹配字符串开始的第一个位置,search是在字符串全局匹配第一个符合规则的。

17.os和sys模块的作用?(★)

os 模块提供了很多允许你的程序与操作系统直接交互的功能。

sys模块能帮助程序员访问与python解释器联系紧密的变量和函数。

18.如何查看占用端口8080的进程。(★★)

方法1 使用lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具。
执行命令: lsof -Pnl +M -i4|grep 8080
输出结果: java 1419 1401 10u IPv4 6793357 TCP *:8080 (LISTEN)

方法2 使用 netstat命令,再用 ps命令
执行命令: netstat -anp|grep 8080
执行命令: ps -ef | grep 12006

19.linux命令(★)
1)目录切换 cd
2) 目录查看 ls [-al]
3)创建目录【增】 mkdir
4)rm 文件 删除当前目录下的文件
5)rm -f 文件 删除当前目录的的文件
6)目录修改【改】mv 和 cp
7) 权限修改
rwx:r代表可读,w代表可写,x代表该文件是一个可执行文件。
查找命令

20.SQL 注入漏洞产生的原因?如何防止?(★★)

SQL 注入产生的原因:程序开发过程中不注意规范书写 sql 语句和对特殊字符进行过滤,导致客户端可以通过全局变量 POST 和 GET 提交一些 sql 语句正常执行。
防止 SQL 注入的方式:
1)开启配置文件中的 magic_quotes_gpc 和 magic_quotes_runtime 设置
执行 sql 语句时使用 addslashes 进行 sql 语句转换
Sql 语句书写尽量不要省略双引号和单引号。
2)过滤掉 sql 语句中的一些关键词:update、insert、delete、select、 * 。
3)提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

Original: https://blog.csdn.net/YeMaQingYu/article/details/127751264
Author: YeMaQingYu
Title: 【无标题】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/749596/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球