skip to content
Logo Logo ZhenXI Blog

1.05

道虽迩,不行不至;事虽小,不为不成。

成语

抱残守缺:形容保守不知改进。

安步当车:古代称人能安贫守贱。现多用以表示不乘车而从容不迫地步行。安,安闲。

安土重迁:安于本乡本土,不愿轻易迁移。重,看得很重。

嗷嗷(áo)待哺(bǔ):形容受饥饿的悲惨遭情景。嗷嗷,哀号声;哺,喂食。

筚(bì)路蓝缕:驾着柴车,穿着破旧的衣服去开辟山林。筚路,柴车。蓝缕,破衣服。形容创业的艰苦。

软考

1 加密算法分类

AES是一种( )算法。

A 公钥加密

B 流密码

C 分组加密

D 消息摘要

加密算法对比总结:

特性对称加密非对称加密哈希算法(消息摘要)
密钥只有一个密钥,用于加密和解密有公钥和私钥,公钥加密,私钥解密无密钥,单向散列函数
密钥管理密钥需要安全传输和保管,密钥交换复杂公钥公开,私钥保密,密钥管理相对简单无需密钥管理
加密/解密速度速度快速度慢速度快
安全性依赖于密钥的安全性,密钥泄露则数据泄露更安全,私钥泄露才可能导致数据泄露主要用于数据完整性校验,不可逆,不能解密
主要用途大量数据加密,如文件加密,数据传输密钥交换,数字签名,少量数据加密数据校验,数字签名,密码存储
代表算法AES, DES, 3DES, RC4, ChaCha20, SM4RSA, DSA, ECC, SM2MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, SM3
固定输出长度N/A (输出长度取决于输入和算法)N/A (输出长度取决于输入和算法)是 (不同算法有不同的固定输出长度)

具体算法介绍:

分类算法名称原理优点缺点固定输出长度
对称加密算法DES加密和解密使用相同的密钥加密速度快密钥管理复杂,安全性较低N/A
3DESDES 的改进版,使用三个密钥进行三次加密安全性比 DES 高效率较低,密钥管理复杂N/A
AES基于 Rijndael 算法,使用分组加密安全性高,效率高密钥管理复杂N/A
RC4流密码加密速度快存在安全漏洞N/A
ChaCha20流密码性能高,安全性好N/A
非对称加密算法RSA使用公钥加密,私钥解密密钥管理简单,无需共享密钥加密速度慢N/A
DSA使用私钥签名,公钥验证签名用于数字签名不用于加密N/A
ECC基于椭圆曲线数学的加密算法相同安全级别下,密钥长度短,效率高N/A
SM2中国国家密码算法,基于椭圆曲线N/A
哈希算法(消息摘要)MD5将任意长度数据映射为固定长度的哈希值计算速度快存在碰撞漏洞128 bits
SHA-256将任意长度数据映射为固定长度的哈希值安全性高256 bits

2 SQL注入

SQL是一种数据库结构化查询语言,SQL注入攻击的首要目标是( )。

A 破坏Web服务

B 窃取用户口令等机密信息

C 攻击用户浏览器,以获得访问权限

D 获得数据库的权限

什么是 SQL 注入?

SQL 注入是一种常见的 Web 安全漏洞,攻击者利用该漏洞将恶意的 SQL 代码注入到应用程序的 SQL 查询中,从而实现对数据库的非法访问和操作。简而言之,就是攻击者通过构造特殊的输入,欺骗应用程序执行非预期的 SQL 命令。

SQL 注入是如何发生的?

SQL 注入通常发生在应用程序没有对用户输入进行充分的过滤或转义的情况下。当应用程序直接将用户输入拼接到 SQL 查询语句中时,攻击者就可以通过精心构造的输入来改变 SQL 查询的语义,从而执行恶意操作。

SQL 注入的危害:

SQL 注入的危害非常严重,攻击者可以利用该漏洞进行以下操作:

  • 数据泄露: 读取、修改或删除数据库中的敏感数据,如用户信息、财务数据等。
  • 绕过身份验证: 绕过登录验证,以管理员或其他用户的身份访问系统。
  • 权限提升: 获取数据库服务器的控制权,甚至控制整个服务器。
  • 执行系统命令: 通过数据库服务器执行操作系统命令,从而完全控制服务器。
  • 拒绝服务: 破坏数据库,导致应用程序无法正常运行。

SQL 注入攻击的首要目标是绕过验证,获取对数据库的未授权访问和控制。

更具体地说,攻击者通常试图实现以下目标:

  1. 绕过身份验证: 这是最常见的目标之一。攻击者试图通过注入恶意 SQL 代码来欺骗应用程序,使其认为攻击者是合法用户,从而无需提供正确的凭据即可访问系统。
  2. 获取数据访问权限: 一旦攻击者绕过了身份验证或以其他方式获得了访问权限,他们的主要目标通常是访问存储在数据库中的敏感数据。这包括:
    • 读取数据: 窃取机密信息,如用户凭据、个人身份信息 (PII)、财务数据、商业机密等。
    • 修改数据: 篡改数据,例如更改账户余额、订单信息或用户权限。
    • 删除数据: 删除重要数据,导致数据丢失或服务中断。

虽然获取数据访问权限是最常见的目标,但更高级的攻击者可能会追求更深层次的目标:

  1. 提升权限: 攻击者可能会尝试利用 SQL 注入漏洞来提升他们在数据库服务器中的权限,最终目标可能是获得数据库管理员权限,甚至操作系统级别的访问权限。
  2. 执行系统命令: 在某些情况下,如果数据库配置不当或存在其他漏洞,攻击者可以利用 SQL 注入漏洞在数据库服务器上执行操作系统命令。这使他们能够安装恶意软件、创建后门、窃取更多数据或对服务器进行进一步的攻击。

如何防范 SQL 注入?

防范 SQL 注入的关键在于对用户输入进行严格的过滤和转义,以及使用参数化查询或预编译语句。

以下是一些常见的防范措施:

  • 输入验证: 对用户输入进行类型、长度、格式等方面的校验,只允许符合预期的输入。
  • 输出转义: 对输出到 HTML 页面的数据进行转义,防止 XSS 攻击。
  • 参数化查询: 使用参数化查询或预编译语句,将用户输入作为参数传递给 SQL 查询,而不是直接拼接到 SQL 语句中。
  • 最小权限原则: 使用最小权限的数据库账号连接数据库,限制数据库账号的权限,减少攻击造成的损害。
  • 错误处理: 不要将数据库错误信息直接显示给用户,防止攻击者利用错误信息进行攻击。
  • 使用 Web 应用防火墙 (WAF): WAF 可以识别和阻止 SQL 注入攻击。
  • 定期安全审计: 定期对应用程序进行安全审计,及时发现和修复安全漏洞。