乐于分享
好东西不私藏

软件开发安全

软件开发安全

一、理解并集成软件开发生命周期(SDLC)中的安全

1.1 开发方法(如敏捷、瀑布、 DevOps、 DevSecOps)

1.1.1 瀑布模型

传统的瀑布模型有7个发展阶段。随着每个阶段的完成,项目进入下一阶段。在实际应用中,瀑布模型必然演变为更现代的模型——迭代瀑布模型,迭代瀑布模型允许开发返回前一阶段,以纠正后续阶段中发现的缺陷,这通常被称为瀑布模型的反馈回路特性。

模型受到的一个主要批评是:只允许开发人员在软件开发过程中后退一个阶段。同时瀑布模型并没有规定如何处理在开发周期后期发现的错误。

1.1.2 螺旋模型

允许瀑布型的处理过 程多次反复。

螺旋的每次“回路”都导致新系统原型的开发,理论上,系统开发人员为每个原型的开发应用完整的瀑布处理过程,由此逐渐得到满足所有功能要求(经过全面验证)的成熟系统。

螺旋模型为瀑布模型受到的主要批评提供了一个解决方案,也就是说,如果技术需求和客户需求发生变化,需要改进系统时,允许开发人员回到计划编制阶段。

瀑布模型侧重于大规模的工作,以交付已完成的系统,而螺旋模型侧重于迭代一系列越来越“完善”的原型,以强化质量控制

1.1.3 敏捷模型

它与传统的瀑布模型不同,强调迭代、快速交付、持续反馈和灵活响应变化

核心思想:

  • • 迭代式开发:不是一次性完成整个系统,而是分成多个小版本(迭代)。
  • • 持续交付价值:每个迭代都产出一个可运行的版本。
  • • 客户参与:需求不是一开始就全部确定,而是在开发过程中持续沟通和调整。
  • • 跨职能团队:开发、测试、运维、业务人员协作完成每个迭代。
  • • 拥抱变化:即使需求在开发中期改变,也可以快速适配。

在敏捷中,SDLC的传统阶段会被压缩并重复进行:

阶段
主要活动
敏捷特点
1. 需求收集
与客户和业务方讨论需求,形成用户故事(User Stories)
需求轻量化,用故事卡描述,不追求详尽文档
2. 设计
制定系统架构草案和UI草图
设计足够支撑当前迭代,避免大而全
3. 开发
编码实现用户故事功能
小步快跑,配对编程、代码评审
4. 测试
单元测试、集成测试、自动化测试
测试与开发同步进行
5. 部署
部署到测试环境/生产环境
持续集成(CI)+持续交付(CD)
6. 反馈
客户试用并反馈
下个迭代优化

常见敏捷框架:

  • • Scrum:将工作组织成短时间的活动冲刺。这是定义明确的时间段,通常在一到四周之间,团队专注于实现短期目标,而短期目标有助于项目的更大目标。在每个冲刺开始时, 团队聚在一起计划冲刺期间进行的工作。在冲刺结束时,团队应该有一个功能齐全的产品可以发布,即使它还不能满足用户所有的需求。随后的每一次冲刺都会在产品中引入新功能。
  • • Kanban(看板):任务流动可视化,持续交付,没有固定周期。
  • • Extreme Programming (XP):强调技术实践,如TDD(测试驱动开发)、持续集成。

优势:

  • • 交付快,能尽早看到成果
  • • 适应需求变化能力强
  • • 客户参与度高
  • • 缺陷可以在早期发现并修正

劣势:

  • • 对团队协作和自我管理要求高
  • • 文档可能不足
  • • 项目范围容易失控(Scope Creep)
  • • 需要客户持续参与,否则效果下降

1.1.4 DevOps 方法

在软件开发、质量保证和IT运营这些主要的 IT职 能之间存在脱节的情况。这些职能通常被分配给不同的人,他们位于组织中不同的单元, 通常彼此冲突。这种冲突导致在创建、测试和部署代码到生产系统的过程中出现长时间延迟。 当问题出现时,团队不合作解决问题,而是经常“踢皮球”,这导致官僚作风。

🚀 快速理解:

  1. 1. DevOps
    • • 把 开发(Dev) 和 运维(Ops) 融合,强调快速、持续交付。
    • • 核心目标:更快上线 + 更稳定运行
  2. 2. DevSecOps
    • • 在 DevOps 基础上,加入 安全(Sec)
    • • 核心思想:安全不是最后才做,而是从一开始就融入整个开发与运维流程
    • • 比如:
      • • 在写代码时就进行静态安全扫描
      • • 在CI/CD流水线里自动做漏洞检测
      • • 运维阶段用日志/监控发现安全问题
  3. 3. 一句话总结
    👉 DevSecOps = 开发 + 运维 + 安全 一体化,让安全和速度不冲突,而是并行

🧩 记忆小技巧:

  • • DevOps:像“高速公路”,让代码飞快上线。
  • • DevSecOps:在高速公路上加了“护栏+测速监控”,既快又安全。

1.2 成熟度模型(如能力成熟度模型(CMM)、软件保证成熟度模型(SAMM))

1.2.1 能力成熟度模型

SW-CMM(由 Carnegie Mellon 大学 SEI 提出)把软件组织的发展划分为五个成熟度等级,主张通过建立、量化并持续改进软件过程,把“混乱的、临时的开发”变成“可重复、可度量并持续优化”的工程化过程,从而提高软件质量。模型本身未专门覆盖安全,但应把安全需求嵌入各级过程活动中。

五个成熟度级别(简明):

  1. 1. 第1级 — 初始(Initial)
    无标准化过程,依赖个人英雄主义,结果不可预测。
  2. 2. 第2级 — 可重复(Repeatable)
    引入基本生命周期管理和项目控制,使类似项目可复现。关键过程域:需求管理、项目计划、项目跟踪与监督、外包合同管理、质量保证、配置管理。
  3. 3. 第3级 — 定义(Defined)
    建立组织级、文档化的标准过程并在项目中推广。关键过程域:组织过程关注、过程定义、培训、集成管理、产品工程、跨组协调、同行评审。
  4. 4. 第4级 — 管理(Managed)
    通过定量方法管理过程与质量,使用度量数据进行控制。关键过程域:定量过程管理、软件质量管理。
  5. 5. 第5级 — 优化(Optimizing)
    持续改进机制运行良好,反馈用于预防缺陷和流程改进。关键过程域:缺陷预防、技术变更管理、过程变更管理。

关于安全的实践建议(如何在 CMM 中嵌入安全):

  • • 在需求管理中加入安全需求(功能性 + 非功能性)。
  • • 在项目计划/跟踪中列出安全里程碑与验收准则(威胁建模、渗透测试)。
  • • 在质量保证 / 同行评审中包含安全检查清单(代码审计、依赖项漏洞扫描)。
  • • 在配置管理中管理安全配置与补丁记录。
  • • 在培训组织过程定义中纳入安全开发生命周期(SDL)知识与模板。
  • • 在第4、5级用量化指标(漏洞密度、修复时间)驱动安全改进与缺陷预防。

1.2.2 软件保证成熟度模型

SAMM(Software Assurance Maturity Model)是 OWASP 维护的开源框架,目的是把安全活动系统化地嵌入软件开发与运维生命周期,并为组织提供可衡量的成熟度评估方法。它以业务功能为单位组织安全实践,便于评估、优先级排序和持续改进。

五个业务功能(与核心说明):

  1. 1. 治理(Governance)
    管理层面与策略、度量、合规、教育和督导相关的活动。负责把安全目标转化为组织策略、度量指标与培训项目,使安全成为可管理的业务能力。
  2. 2. 设计(Design)
    在需求与架构层面引入安全:威胁建模、威胁评估、安全需求定义和安全架构评审,确保设计阶段就把安全考虑进来(shift-left)。
  3. 3. 实施(Implementation)
    与构建和部署软件相关的安全实践:安全构建流水线、依赖/组件管理、安全部署配置与缺陷(漏洞)管理流程。
  4. 4. 验证(Verification)
    验证代码与系统是否满足业务/安全要求的一系列活动:架构分析、需求/用例驱动的安全测试、静态/动态/交互式安全测试等。
  5. 5. 运营(Operations)
    软件发布后保证运行时安全的活动:事件响应与管理、环境与配置管理、运营监控与补丁更新流程。

典型用法(流程化建议):

  • • 评估:按业务功能和细化实践对组织当前状态打分(通常分级:0/1/2/3 或类似等级)。
  • • 优先化:基于风险、合规和资源,把待推进的实践排入路线图(roadmap)。
  • • 实施:把选定实践整合进现有工程流程(如 CI/CD、需求管理、变更管理)。
  • • 度量与改进:用可量化指标(如发现的安全缺陷率、平均修复时间、威胁建模覆盖率等)跟踪进展并反馈到下一周期。

示例成熟度量表(简短版):

  • • 0 — 未实现:无明确实践或偶发做法。
  • • 1 — 初始/手工:有手工、零散的做法,依赖个别人。
  • • 2 — 定义/系统化:实践被文档化并在部分项目中采用。
  • • 3 — 优化/度量化:实践普遍采纳,且有量化度量与持续改进机制。

常见度量/指标举例:

  • • 威胁建模覆盖率(占所有新特性的比例)
  • • CI/CD 中自动化安全扫描的通过率
  • • 平均安全缺陷修复时间(MTTR)
  • • 生产安全事件数量与严重度分布
  • • 员工安全培训覆盖率与考试通过率

1.2.3 IDEAL模型

IDEAL 模型是 软件过程改进 的一种框架,名字来源于其五个阶段的首字母(Initiating、Diagnosing、Establishing、Acting、Learning),它实现了多个 SW-CMM 的属性。

五个阶段

  1. 1. 启动(Initiating)
    • • 说明变更的业务原因
    • • 获得管理层和资源支持
    • • 建立合适的基础设施作为改进起点
  2. 2. 诊断(Diagnosing)
    • • 分析组织当前的状态(现状评估)
    • • 给出改进的方向与一般性建议
  3. 3. 建立(Establishing)
    • • 采用诊断阶段的建议
    • • 制定具体的行动计划和实施方案
  4. 4. 行动(Acting)
    • • 从“讨论”转向“执行”
    • • 开发、测试、改进并逐步推广解决方案
  5. 5. 学习(Learning)
    • • 对改进过程进行评估和反思
    • • 判断是否达到预期目标
    • • 必要时提出新措施,使改进重新回到正确轨道


助记短语:短句:“I...I, Dr. Ed, am lo(w)”

IDEAL 模型(5阶段)SW-CMM 模型(5级)
I
 – Initiating(启动)
I
 – Initial(初始)
D
 – Diagnosing(诊断)
R
 – Repeatable(可重复)
E
 – Establishing(建立)
D
 – Defined(定义)
A
 – Acting(行动)
M
 – Managed(管理)
L
 – Learning(学习)
O
 – Optimized(优化)

1.3 运营和维护

1.3.1 甘特图(Gantt Chart)

  • • 一种随时间变化的 条形图
  • • 用途:
    • • 展示项目任务与进度的关系。
    • • 帮助 计划、协调和跟踪 项目中特定任务的调度。
  • • 特点:
    • • 特别适合协调 需要相同团队成员或资源 的任务。

1.3.2 计划评审技术(PERT, Program Evaluation and Review Technique)

  • • 一种 项目调度工具,侧重风险与规模估算。
  • • 方法:
    • • 针对每个任务(或组件),给出 三点估计
      • • 最小可能规模(Optimistic, O)
      • • 最可能规模(Most likely, M)
      • • 最大可能规模(Pessimistic, P)
    • • 用这些值计算期望规模与 标准偏差 (SD),用于风险评估。
  • • 特点:
    • • PERT 图表清晰表示 任务之间的依赖关系
    • • 项目经理可据此合理分配资源和时间。
    • • 直接用于 改进项目管理和软件开发,提升效率。
    • • 随着管理和编程能力提升,实际软件规模应趋于更小。

✅ 一句话总结

  • • 甘特图 强调任务与时间的可视化关系,适合 跟踪与协调
  • • PERT 技术 注重任务间的 依赖关系与风险估算,帮助 预测和优化项目进度

1.4 变更管理

1.4.1 软件变更管理(Change Management)

目的:在软件发布到生产环境后,用户必然会提出 新增功能、修复漏洞、优化代码 的需求。
这些变更必须通过 有组织的流程 进行管理,以便于 审计、调查、故障排除和后续分析

三个核心组件

  1. 1. 请求控制(Request Control)
    • • 用户提交变更请求
    • • 管理者进行成本/效益分析
    • • 开发人员据此优化任务
  2. 2. 变更控制(Change Control)
    • • 重现并分析用户遇到的问题
    • • 提供组织化框架让多个开发者共同创建、测试并部署解决方案
    • • 包括:
      • • 遵守质量控制约束
      • • 使用专门工具管理更新与部署
      • • 正确记录所有代码变更
      • • 最小化新代码对安全性的负面影响
  3. 3. 发布控制(Release Control)
    • • 在变更正式发布前进行严格审核
    • • 移除调试代码或潜在后门
    • • 确保只发布 已批准的变更
    • • 包含 验收测试,确认变更满足用户工作需求

1.4.2 结合安全监控的应用

  • • 在数据中心,变更管理可作为 检测未授权变更 的重要手段。
  • • 文件完整性监控工具(FIM)
    • • 能监控数百台服务器上的文件变化
    • • 但会产生大量“正常活动”引起的警报 → 管理困难
  • • 改进方法
    • • 将文件完整性监控与 变更管理流程 集成
    • • 所有警报集中到监控中心
    • • 与已批准的变更请求进行关联
    • • 只有当变更未获授权时才触发警告
  • • 效果
    • • 大幅减少管理员在无效警报上的精力浪费
    • • 提高安全工具的有效性和实用性

1.5 集成产品团队(IPT)

  • • 背景:敏捷看似新,但“把人聚在一起协作”这个思想很早就有。
  • • 例子:美国国防部在 1995 年 就提出了 IPT(集成产品团队)
  • • 做法:IPT = 跨职能团队 → 包括不同专业的人(技术、管理、用户方…)。
  • • 目标:交付产品、流程或策略。
  • • 核心思想
    • • 并行决策(大家同步考虑问题)
    • • 而不是顺序决策(等一个环节完成再交给下一个)
    • • 确保从头到尾考虑到产品的各个方面。

敏捷和IPT两者的相似点就在于:都强调跨职能团队一起协作、快速反馈,而不是按传统的线性顺序来做事

比如:

  • • 在传统模式下,需求 → 设计 → 开发 → 测试 → 运维,像接力赛,一个做完才轮到下一个。
  • • 在 IPT 或敏捷中,开发、测试、用户代表、运维甚至安全人员都能 同步参与,让问题更早暴露、尽快解决。

换句话说:
👉 IPT 像敏捷的“前身”,它体现的就是 多角色协同 + 并行决策,这和敏捷中的 跨职能团队 + 短迭代 是同一类思路。

二、识别并应用软件开发生态系统中的安全控制

2.1 编程语言

  • • 计算机只能直接执行二进制(机器语言),不同 CPU 有不同的机器指令集,人类难以直接阅读。
  • • 汇编语言 用助记符表示底层指令,更可读但仍贴近硬件,编写冗长且繁琐。
  • • 高级语言(如 Python、C++、Java 等) 提高开发效率、增强可移植性并缩短开发周期,通常推荐用于应用开发。
  • • 编译型语言(如 C、Java、Fortran 等)通过编译器把源码转换成可执行文件。用户一般看不到源码,增加了源代码隐藏性,但编译后仍可被反编译/反汇编分析。
  • • 解释型语言(如 Python、JavaScript、VBScript、R 等)分发源代码,运行时由解释器逐条执行,源码可被用户直接查看和修改。
  • • 运行时环境(例:JVM) 可以提供跨平台执行能力,程序依赖运行时进行移植和执行。
  • • 安全权衡
    • • 编译型:不易被普通用户篡改或查看,但攻击者可在编译前或编译产物中植入后门;反向工程工具能恢复逻辑。
    • • 解释型:源码可审计,降低原作者在分发时藏匿恶意代码的可能性,但任何有源代码的人都能轻易修改并注入恶意逻辑。
  • • 防护/对抗手段:代码混淆/模糊处理、代码签名、静/动态分析、运行时完整性检测等,用以降低逆向与篡改风险。

2.2 库

  • • 开发者常用可重用的共享库(从字符串工具到机器学习框架),节省开发时间。
  • • 共享库来源多样:开源、商业、内部维护
  • • 共享库带来集中化风险:库本身的漏洞会被成千上万的系统继承(Heartbleed 为经典例子)。
  • • 用户/上层系统往往并不直接知道底层依赖中用了哪些第三方库,导致修复滞后。
  • • 防范不是否定共享库的价值,而是要增强对依赖的可见性和响应能力
  • • 需要开发与安全团队协作,把依赖管理纳入日常开发/运维流程。

2.3 工具集

开发人员使用各种工具来帮助他们工作,其中最赋要的是集成开发环境(IDE)。

2.4 集成开发环境(IDE)

IDE为程序员提供了一个单一的环境,在这里他们可以编写代码,测试代码,调试代码和编译代码(如果适用)。 IDE 简化了这些任务的集成,对许多开发入员来说, IDE 的选择因人而异。

2.7 持续集成和持续交付(Cl/CD)

  1. 1. CI(持续集成,Continuous Integration)
    • • 做什么:开发人员不断把代码合并(集成)到主分支。
    • • 关键点:每次提交代码,系统都会自动:
      • • 编译 →
      • • 跑单元测试 →
      • • 做静态检查。
    • • 好处:能 早发现问题,避免大家到最后才发现代码合不起来。
  2. 2. CD(持续交付/持续部署,Continuous Delivery / Deployment)
    这里常见两个解释:
    • • 持续交付(Delivery):代码通过自动化测试和构建后,可以随时发布,但是否上线由人来决定。
    • • 持续部署(Deployment):代码通过测试后,自动直接部署到生产环境

一句话区分:
👉 Delivery = “随时能上线”,Deployment = “自动上线”。

  1. 3. 合在一起:CI/CD
    • • CI 保证代码 一直是健康的
    • • CD 保证软件 能稳定、快速交付给用户

就像:

  • • CI = 不停检查“发动机”有没有问题。
  • • CD = 让“车子”随时能顺畅开上路,甚至自动开到目的地。

2.8 安全编排、自动化和响应(SOAR)

SOAR(安全编排、自动化和响应):一组技术,用来自动化安全事件的处理和响应。

⚙️ 传统方式 vs. SOAR

  • • 传统:安全管理员靠手动验证和处理每个警报,重复性高、效率低。
  • • SOAR:可以自动检测、验证、执行预定义动作(减少人工介入)。

🛠 核心组件:

  1. 1. 剧本(Playbook)
    • • 定义:如何验证事件 + 如何响应。
    • • 用途:像操作手册,给出标准步骤。
    • • 示例:检测到 SYN 洪水攻击 → 验证 → 调整服务器 ACK 等待时间 → 攻击结束后恢复。
  2. 2. 运行脚本(Runbook / Script)
    • • 定义:自动化执行剧本里的步骤。
    • • 示例:IDS 检测到异常流量 → 自动验证是否为 SYN 洪水 → 自动执行缓解措施。

📌 价值

  • • 自动化响应:减少人工重复劳动。
  • • 并行效率:快速抑制威胁。
  • • 可手动 fallback:即使自动化失败,剧本也能当作手工指南。

👉 一句话总结:
SOAR 就是让“安全事件响应”从 人工手工活 变成 自动化流水线,用剧本+脚本来执行。

2.9 软件配置管理(SCM, Software Configuration Management)

除了变更控制过程之外,安全管理员还应意识到软件配置管理(SCM)的重要性。

目的:在组织范围内 控制软件版本,并对所有变更进行正式追踪与管理。

四个主要组件

  1. 1. 配置标识(Configuration Identification)
    • • 记录组织中使用的所有软件产品配置
  2. 2. 配置控制(Configuration Control)
    • • 确保软件版本的变更符合既定策略
    • • 只有授权更新才可分发和应用
  3. 3. 配置状态统计(Configuration Status Accounting)
    • • 正规记录和跟踪所有已授权变更
  4. 4. 配置审计(Configuration Audit)
    • • 定期检查,确保实际生产环境与记录一致
    • • 防止未授权变更

2.10 代码库

代码仓库极大促进分布式协作,但若访问控制和秘密(API 密钥、密码、内部配置等)管理不当,会带来严重的安全与财务风险。

要点:

  • • 代码仓库是团队共享源代码、版本控制、问题追踪与发布管理的核心平台(如 GitHub、Bitbucket 等)。
  • • 分布式开发提高了协作效率,但也增加了管理复杂性(多地点、多人员、多权限)。
  • • 不当的访问控制(读/写权限过宽)会导致未经授权的数据读取或代码篡改。
  • • 将敏感信息(API 密钥、数据库密码、内部主机名等)放入仓库尤其危险:一旦推到公开仓库,自动化爬虫和恶意程序能在几秒内发现并滥用这些密钥,造成计费、资源滥用或数据泄露。
  • • 与 IaaS(如 AWS、Azure、GCP)关联的密钥被泄露还可能直接导致财务损失(攻击者在你的账单下创建资源)。

推荐的防护措施(简要清单):

  1. 1. 最小权限原则 ——严格按需分配读/写/管理员权限,使用角色与审批流程。
  2. 2. 秘密不入库——把密钥/密码放在环境变量、秘密管理器或密钥库(Vault、Cloud Secret Manager)中;使用 .gitignore 避免把凭证文件提交。
  3. 3. 自动扫描与拦截——在 CI/提交钩子或仓库中启用秘密扫描(prevent accidental commits),并启用依赖/代码安全扫描。
  4. 4. 快速响应机制——若发现泄露,立即撤销/轮换密钥并审计使用日志。
  5. 5. 审计与监控——开启访问与操作日志,定期检查异常行为与权限变化。
  6. 6. 教育与流程——培训开发者关于提交敏感信息的风险,并在团队内建立提交审核与合规流程。

简短结论:把代码仓库当作协作价值中心的同时,也必须把权限管理、秘密管理和检测响应当作同等重要的工程实践。

2.11 应用程序安全测试(如静态应用程序安全测试(SAST)、动态应用程序 安全测试(DAST))

2.11.1 SAST

静态应用程序安全测试(SAST)不运行软件,而是通过 分析源代码或编译产物 来发现安全问题。

⚙️ 怎么做:

  • • 使用 自动化检测工具
  • • 主要发现:常见缺陷(如缓冲区溢出等)。

📌 应用场景:

在 成熟开发环境 中,开发人员会:

  • • 在 设计、构建、测试 阶段使用 SAST 工具
  • • 让安全检查 提前介入 软件开发生命周期。

👉 一句话总结:
SAST = 提前在代码层面发现安全漏洞,让问题在上线前就被消灭。

2.11.2 DAST

动态应用程序安全测试(DAST)

  • • 在 软件运行环境 下进行安全性检测。
  • • 特点:黑盒测试 → 不需要源代码,只关注软件的外部表现。

⚙️ 应用场景:

  • • 他人开发的软件(拿不到源码时,DAST 是唯一选择)。
  • • 常用工具:Web 应用扫描器,检测 XSS、SQL 注入等漏洞
  • • 在生产环境中要谨慎,避免测试导致服务中断。

🧪 方法示例:

  • • 模拟事务(Synthetic Transaction)
    • • 脚本化事务 + 预期结果
    • • 实际输出 ≠ 预期输出 → 说明存在缺陷,需要进一步分析。

📌 局限性

  • • 如果漏洞在供应商代码里,组织 无法直接修复,只能做 补偿性控制措施 来降低风险。

🌍 道德披露原则:

  • • 先私下告知供应商 → 给时间修复。
  • • 供应商未修复 → 可公开披露漏洞,提醒行业和用户。
  • • 目的:在保护用户的同时,推动供应商改进。

👉 一句话总结:
DAST = 黑盒测试 → 在运行中发现漏洞。适合测试外部系统,但修复权不一定在自己手里。

三、评估所购软件对安全的影响

3.1 商用现货(COTS)

  • • 获取方式:组织从供应商购买许可证(如 Microsoft Exchange)。
  • • 部署方式:安装在企业自有的物理或虚拟服务器,或 IaaS 环境中。
  • • 安全责任:企业需负责软件安装、配置、补丁管理和安全加固。

3.2 开放源码

  • • 获取方式:由社区开发和维护,任何人都可以免费下载和使用。
  • • 应用场景:可以单独使用,也常作为 COTS 软件的一部分。
  • • 安全责任:企业需跟踪社区安全公告、及时打补丁,并妥善配置以避免风险。

3.3 第三方

  • • 获取方式:通过互联网直接使用供应商托管的软件服务(如 Google Workspace、Microsoft 365 邮件)。
  • • 部署方式:软件运行在供应商的服务器上,用户通过浏览器或客户端访问。
  • • 安全责任:主要由供应商承担,企业需负责账号管理、访问控制,并监督供应商的安全性(审计、漏洞扫描、合规检查)。

4、定义并应用安全编码指南和标准

4.1 API的安全性

现代 Web 应用特点:

  • • 早期:独立系统,仅处理输入/输出。
  • • 现在:更复杂,依赖多个 外部服务交互,如:
    • • 信用卡支付
    • • 社交媒体分享
    • • 物流/运输服务
    • • 营销推广

→ 跨站点功能需要 API(应用编程接口) 来支持。

API 的作用:

  • • 提供功能调用,绕过网页直接访问底层服务。
  • • 示例(社交媒体 API 功能调用):
    • • 发布状态
    • • 关注 / 取消关注
    • • 点赞 / 收藏

→ API 为服务带来机会,但也带来安全挑战

API 安全挑战:

  1. 1. 身份认证
    • • 部分 API(如天气查询)可公开访问。
    • • 关键 API(如下单、访问敏感信息)必须有严格认证。
    • • 常用方式:API 密钥(相当于密码)。
      • • 必须存放在安全位置
      • • 仅在加密信道上传输(HTTPS/TLS)
      • • 泄露后攻击者可冒充用户
  2. 2. 安全测试
    • • API 需像 Web 应用一样进行 漏洞测试
    • • 工具示例:curl(可直接向 API 发送请求,也可能被攻击者利用)。
curl -H "Content-Type: application/json" \
 -X POST \
 -d '{"week":10,"hrv":80,"sleephrs":9,"sleepquality":2,"stress":3,"paxid":1}' \   https://prod.myapi.com/v1

开发人员的安全责任:

  • • 确定 何时需要认证,并验证每个 API 调用的凭证和权限。
  • • 妥善管理 API 密钥(避免硬编码、暴露)。
  • • 对 API 进行持续的安全测试和漏洞修复。

👉 一句话总结:
现代 Web 应用高度依赖 API,但 API 同时也是攻击者的切入点。安全设计必须强调认证、密钥保护和测试。

4.2 安全编码实践

4.2.1 源代码注释

注释的价值:

  • • 是优秀开发人员工作流的重要组成部分。
  • • 用途:
    • • 记录设计选项
    • • 解释工作流程
    • • 为后续维护和排查提供关键信息

潜在的安全风险:

  • • 注释可能被攻击者利用,提供代码工作原理的“路线图”
  • • 某些注释甚至包含 敏感信息(如配置、密码、密钥)。

安全最佳实践:

  1. 1. 保持机密
    • • 源代码中的注释可供团队内部参考,但必须避免暴露给不可信用户。
    • • 编译后的可执行文件不会包含注释(相对安全)。
  2. 2. 生产环境清理
    • • 对于 Web 应用程序(公开代码的情况),必须在部署前删除注释。
    • • 注释可保留在源代码存档中,供开发人员未来参考。

👉 一句话总结:
注释是开发协作的利器,但如果暴露在生产环境中,可能成为攻击者的情报来源,因此应当在发布前移除。

4.2.2 错误处理

攻击者的利用方式:

  • • 攻击者会尝试制造 异常输入 来测试代码的边界。
  • • 示例:
    • • Web表单要求输入年龄 → 仅验证“是否为整数”不够。
    • • 攻击者可能输入 50000位的数字 → 触发整数溢出攻击。

正确的错误处理方式:

  • • 目标:在异常情况发生时,应用程序能 安全介入并处理
  • • try...catch机制(Java示例):
intnumerator=10;
intdenominator=0;
try {
intquotient= numerator / denominator;
catch (ArithmeticException err) {
    System.out.println("Division by zero!");
}
  • • 将可能出错的代码放在 try 里
  • • 错误发生时由 catch 指定安全处理方式

错误处理的风险:

  1. 1. 处理不足
    • • 如果缺乏健壮的错误处理,应用容易崩溃或暴露漏洞。
  2. 2. 处理过度(信息泄露)
    • • 错误消息包含太多内部细节 → 可能帮助攻击者。
    • • 例:某法国网站错误信息泄露了 SQL 查询语句和数据库类型 (MySQL),攻击者可利用此信息发起 SQL 注入

安全最佳实践:

  • • 用户可见的错误提示:保持简洁,只提供必要信息(如“输入无效”)。
  • • 内部日志:记录尽可能详细的信息,供开发人员排查问题。
  • • 防御性编程:预判各种异常输入,编写安全的边界处理逻辑。

👉 一句话总结:
错误处理要“既不缺失也不过度”,既能安全应对异常情况,又避免向攻击者暴露内部细节。

4.2.3 硬编码凭证

硬编码凭证的两种变体:

  1. 1. 后门账户(Backdoor)
    • • 开发人员在源代码中创建维护账户,绕过正常身份认证。
    • • 风险:任何知道后门的人都能访问系统,尤其在生产环境中危害极大。
  2. 2. 服务访问凭证
    • • 开发人员在代码中直接写入 API 密钥或其他服务凭证
    • • 风险:如果代码泄露(例如上传到公共代码仓库),外部人员可以滥用这些凭证。

安全最佳实践:

  • • 避免在源代码中硬编码任何敏感信息
  • • 使用安全配置或密钥管理系统 来存储凭证。
  • • 公共仓库:绝不能上传含敏感信息的代码。

👉 一句话总结:
硬编码凭证和后门是严重安全风险,必须通过安全配置和密钥管理来替代。

4.2.4 内存管理

4.2.4.1 资源耗尽

资源耗尽问题:

  • • 系统上的 有限资源(内存、存储、处理时间等)可能被耗尽。
  • • 耗尽原因:
    • • 有意:攻击者发起资源消耗攻击(DoS)
    • • 无意:应用程序或系统错误导致资源占用
  • • 结果:系统功能受限,甚至崩溃或无法使用。

内存泄漏(Memory Leak):

  • • 定义:应用程序申请了内存,但不再需要时未释放给操作系统。
  • • 原因:无法追踪已分配内存的对象,导致无法回收。
  • • 后果
    • • 系统可用内存逐渐耗尽
    • • 系统崩溃或性能下降
    • • 重启可以暂时释放内存,但问题会重复出现

安全与开发提示:

  • • 防御措施
    • • 开发时注意内存管理
    • • 及时释放不再使用的资源
    • • 定期测试应用程序的内存使用情况

👉 一句话总结:
资源耗尽是系统安全和稳定性的重要威胁,内存泄漏是最典型的例子,需要通过良好的内存管理和监控来防范。

4.2.4.2 指针解引用

指针概念:

  • • 定义:指针是存储 内存地址 的变量,用于访问内存中其他位置的数据。
  • • 示例
 photo 指针 → 存储照片在内存中的地址
  • • 程序通过 指针解引用 来访问照片数据

NULL 指针问题:

  • • NULL 指针:指针不指向有效内存,而是空值。
  • • 风险
    1. 1. 空指针异常 → 程序崩溃,可能泄露调试信息
    2. 2. 绕过安全控制 → 在某些情况下,攻击者可能利用空指针异常突破安全限制

安全防护建议:

  • • 开发人员与安全专业人员应合作:
    • • 避免 NULL 指针的解引用
    • • 在访问指针前进行有效性检查
    • • 对异常情况进行安全处理,防止信息泄露或控制绕过

👉 一句话总结:
指针是强大工具,但 NULL 指针可能引发异常和安全漏洞,需通过有效性检查和异常处理加以防护。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 23:51:59 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/632153.html
  2. 运行时间 : 0.192449s [ 吞吐率:5.20req/s ] 内存消耗:4,815.64kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=37c9449b8c08220899d74657cf186a38
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000644s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000904s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000339s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000294s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001457s ]
  6. SELECT * FROM `set` [ RunTime:0.000850s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002040s ]
  8. SELECT * FROM `article` WHERE `id` = 632153 LIMIT 1 [ RunTime:0.002294s ]
  9. UPDATE `article` SET `lasttime` = 1783093919 WHERE `id` = 632153 [ RunTime:0.008540s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000875s ]
  11. SELECT * FROM `article` WHERE `id` < 632153 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001324s ]
  12. SELECT * FROM `article` WHERE `id` > 632153 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001239s ]
  13. SELECT * FROM `article` WHERE `id` < 632153 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002345s ]
  14. SELECT * FROM `article` WHERE `id` < 632153 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007608s ]
  15. SELECT * FROM `article` WHERE `id` < 632153 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005212s ]
0.194248s