📘 嵌入式C安全编码规范与防御 30章 · 完全目录

⭐ 友好色系
嵌入式安全威胁概述 安全编码的重要性 常见漏洞类型 缓冲区溢出/整数溢出/格式化字符串
变量初始化 未定义行为 类型转换陷阱 sizeof与strlen误用
栈缓冲区溢出原理 gets/strcpy/strcat危险函数
安全替代函数 strncpy/strncat/snprintf 边界检查策略 静态分析工具
整数溢出/回绕/符号错误 安全比较技巧 SafeInt与编译器内置检查
printf/scanf家族漏洞原理 %n的危害 防御措施与格式化字符串审计
空指针解引用 野指针/悬挂指针 指针算术越界 const正确性
malloc/calloc/realloc/free正确使用 内存泄漏检测 double-free与use-after-free
C字符串表示缺陷 strncpy的陷阱 snprintf正确用法 自定义安全字符串库
数组下标越界 柔性数组成员 静态分析边界 运行时边界检查 _FORTIFY_SOURCE
文件路径遍历 符号链接攻击 临时文件安全 文件权限管理
所有输入都是邪恶的 白名单vs黑名单 正则表达式安全 输入长度限制
argc/argv安全处理 环境变量污染 setuid程序风险
信号处理函数限制 可重入性 volatile sig_atomic_t 异步信号安全函数
线程安全 互斥锁使用/死锁预防 原子操作 数据竞争检测
伪随机数生成器(PRNG)安全 真随机数获取 密钥管理基础 常见加密库使用
栈保护 -fstack-protector PIE/PIC/RELRO/NX/ASLR 编译警告级别
PC-Lint/Coverity/Cppcheck MISRA-C规则 常见误报处理
Valgrind内存检查 AddressSanitizer UndefinedBehaviorSanitizer fuzzing基础
断言(assert)使用 契约式设计 错误处理策略 日志安全
资源受限环境安全权衡 裸机与RTOS安全差异 中断安全
固件加密与签名 安全启动链 JTAG/SWD调试接口保护
socket编程安全 TLS/DTLS集成 协议解析安全 DoS防护
MQTT/CoAP安全实践 设备身份认证 OTA更新安全 物理安全
团队规范制定流程 代码审查清单 自动化检查集成CI/CD
Heartbleed漏洞分析 Stagefright漏洞 嵌入式设备真实漏洞
汽车CAN总线攻击 医疗设备漏洞 工控系统(ICS)安全事件
MISRA-C / CERT C编码标准 ISO 26262 (汽车功能安全) IEC 62304 (医疗软件)
渗透测试基础 模糊测试 AFL/libFuzzer 回归测试/覆盖率分析
安全编码最佳实践总结 AI辅助安全编码 形式化验证简介 持续学习资源