网络常见安全漏洞 | 青训营

75 阅读4分钟

网站基本组成

  • 前端:JavaScript / vue /react
  • 网关:nginx
  • 后端:Go / Java / Node
  • 前后端交互:HTTP / WebSocket image.png

漏洞的分类

服务端漏洞

  • SQL
  • RCE / 命令注入
  • SSRF
  • 文件上传

客户端漏洞

  • XSS
  • CSRF
  • 点击劫持

服务器端漏洞 - 第三方组件漏洞

服务器端漏洞中的第三方组件漏洞是指在服务器应用程序中使用的第三方库、框架或插件中存在的安全漏洞。这些组件可能是开源的,也可能是商业的,但它们都可以成为黑客入侵的潜在目标。以下是防护方式:

  • 定期更新组件:及时更新服务器应用程序中的所有第三方组件至最新版本,以获取已修复的安全漏洞。
  • 组件评估:在选择使用第三方组件之前,评估其安全性和可靠性。查看开发社区的活跃程度、历史漏洞情况等。
  • 漏洞监控:订阅相关漏洞数据库和安全通知,以便及时了解所使用组件的安全更新。
  • 漏洞扫描工具:使用漏洞扫描工具检查应用程序中的第三方组件,以便发现已知漏洞。
  • 应急计划:制定针对第三方组件漏洞的应急计划,以便在发现新漏洞时能够快速采取措施。
  • 最小化依赖:尽量减少对第三方组件的依赖,以降低潜在攻击面。
  • 沙盒环境:将服务器应用程序和其依赖的组件放在隔离的沙盒环境中,以限制潜在攻击的影响范围。
  • 监控和日志记录:设置详细的日志记录和监控,以便及时发现异常行为和潜在的攻击。
  • dependency-check-maven:针对java可以选择使用dependency-check-maven检查项目以来的组件是否存在安全漏洞。

服务器端漏洞 - SQL注入

SQL注入是一种常见的服务器端漏洞,它利用不正确的输入验证或过滤,将恶意的SQL查询插入到应用程序的数据库查询中。这可以导致数据库暴露、数据泄露、破坏数据完整性等严重后果。以下是防护方式:

  • 尽量不要给予DB的Raw方法拼接构造SQL语句,而应该使用预编译、orm框架。
  • 使用orm框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题。
  • 在复杂场景一定要使用拼接SQL,需要对外部输入进行转义。

服务器端漏洞 - 命令行执行

代码中遇到需要调用某个命令才能完成的功能时候,会涉及到命令拼接,如果命令拼接没有做好安全过滤,那么将会导致命令注入风险,服务器权限将会被控制。防护方式:

  • 对动态的值尽可能设置白名单进行验证。
  • 如果某些位置无法白名单,需要尝试对数据类型进行校验。
  • 特殊字符黑名单的过滤,或者转义。

服务器端漏洞 - 越权漏洞

越权漏洞-水平越权

越权漏洞-垂直越权

服务器端漏洞 - SSRF

SSRF又称服务端请求伪造攻击,指攻击者利用后端服务器为跳板,让后端服务向非预期网络地址(主要指内网地址)发出恶意请求,获取敏感信息或执行恶意操作。

服务器端漏洞 - 文件上传漏洞

文件上传漏洞是一种服务器端漏洞,黑客通过上传恶意文件来攻击服务器应用程序。这种漏洞可能导致恶意文件的执行,拓展攻击面,甚至完全接管服务器。以下是防护方案:

  • 限制文件类型:如果系统只需要图片类型,可以从服务端解析文件格式,限制只能传入特定的文件格式。
  • 站库分离:应用部署的位置和上传的文件分离,一般可以使用TOS、OSS等进行文件存储。
  • 防止图床:对图片访问链接进行限制,包括时间限制,访问身份限制等。

总结

文中简单介绍了网站的基本组成和服务器与客户端的常见漏洞,详细介绍了服务器端的几个漏洞,为了保护服务器免受这些漏洞的威胁,在实际开发中要注意这些漏洞并采取相应的措施。