27、类 Unix 系统安全编程指南

类 Unix 系统安全编程指南

1. 安全编程的挑战

在 Linux 和 Unix 等类 Unix 系统上设计和实现真正安全的程序是一项艰巨的任务。因为一个真正安全的程序必须对潜在恶意用户控制的所有可能输入和环境做出适当响应。开发者需要深入了解平台,遵循相关指南,并采用保证流程,如检查和同行评审技术,以减少程序的漏洞。

2. 安全编程的关键准则

2.1 输入验证

要验证所有输入,包括命令行输入、环境变量、CGI 输入等。不要仅仅拒绝“坏”输入,而是要定义什么是“可接受”的输入,并拒绝任何不匹配的输入。

2.2 避免缓冲区溢出

确保长输入(以及长中间数据值)不能被用于控制程序。目前,这是主要的编程错误。

2.3 构建程序内部结构

  • 确保接口安全。
  • 最小化权限。
  • 使初始配置和默认设置安全。
  • 实现故障安全机制。
  • 避免竞态条件,例如在共享目录(如 /tmp)中安全地打开文件。
  • 只信任可信赖的通道,例如大多数服务器在进行安全检查或处理敏感数据(如购买商品的价格)时不能信任其客户端。

2.4 谨慎调用其他资源

  • 将其值限制为有效值,尤其要关注元字符。
  • 检查所有系统调用的返回值。

2.5 谨慎回复信息

  • 尽量减少反馈。
  • 处理对不可信用户的完整或无响应输出。

下面用表格总结这些关键准则:
| 准则 | 具体内容 |
| — | — |
| 输入验证 | 定义可接受输入,拒绝不匹配输入 |
| 避免缓冲区溢出 | 防止长输入控制程序 |
| 构建程序内部结构 | 确保接口安全、最小化权限等 |
| 谨慎调用其他资源 | 限制值、检查返回值 |
| 谨慎回复信息 | 减少反馈、处理输出 |

3. 相关资源和技术文章

网络上有大量关于安全编程的技术文章,以下是一些相关资源:
- [Advosys 2000] Advosys 咨询公司(原名为 Webber 技术服务公司)的《编写安全的 Web 应用程序》:http://advosys.ca/tips/web - security.html
- [Al - Herbish 1999] Al - Herbish 的《安全 Unix 编程常见问题解答》:http://www.whitefang.com/sup.
- [Aleph1 1996] Aleph1 的《为了乐趣和利益而破坏栈》:http://www.phrack.com/search.phtml?view&article=p49 - 14 或 http://www.2600.net/phrack/p49 - 14.html

下面是一个 mermaid 流程图,展示安全编程的基本流程:

graph LR
    A[开始] --> B[输入验证]
    B --> C{是否有效输入}
    C -- 是 --> D[构建程序内部结构]
    C -- 否 --> E[拒绝输入]
    D --> F[避免缓冲区溢出]
    F --> G[谨慎调用其他资源]
    G --> H[谨慎回复信息]
    H --> I[结束]
    E --> I

这些资源涵盖了安全编程的各个方面,从基础概念到具体的编程技巧和漏洞分析,为开发者提供了丰富的学习资料。通过参考这些资源,开发者可以更好地理解和应用安全编程的原则,提高程序的安全性。

4. 更多相关资源介绍

除了前面提到的资源,还有许多其他有价值的资料可供安全编程学习者参考:
- [Anonymous 1999] 《Maximum Linux Security: A Hacker’s Guide to Protecting Your Linux Server and Workstation》:提供了关于保护 Linux 服务器和工作站的黑客视角指南。
- [Anonymous 1998] 《Maximum Security : A Hacker’s Guide to Protecting Your Internet Site and Network》:从黑客角度出发,介绍保护互联网网站和网络的方法。
- [Anonymous Phrack 2001] 《Once upon a free()》:探讨了相关编程中的特定问题。

以下用列表形式继续列举部分资源:
- [AUSCERT 1996] 澳大利亚计算机应急响应团队(AUSCERT)和 O’Reilly 的《A Lab Engineers Check List for Writing Secure Unix Code》:ftp://ftp.auscert.org.au/pub/auscert/papers/secure_programming_checklist
- [Bach 1986] Bach 的《The Design of the Unix Operating System》:介绍 Unix 操作系统的设计。
- [Beattie 2002] Beattie 等人的《Timing the Application of Security Patches for Optimal Uptime》:关于安全补丁应用时间以实现最佳正常运行时间的研究。

4.1 资源分类与特点

资源类型 特点 示例
编程指南类 提供具体编程的指导和技巧 [Advosys 2000]、[Al - Herbish 1999]
黑客视角类 从攻击者角度分析安全问题 [Anonymous 1999]、[Anonymous 1998]
操作系统设计类 讲解操作系统底层设计对安全的影响 [Bach 1986]

5. 不同资源在安全编程流程中的作用

不同的资源在安全编程的各个环节都能发挥重要作用。下面通过一个 mermaid 流程图来展示:

graph LR
    A[输入验证阶段] --> B[编程指南类资源]
    A --> C[黑客视角类资源]
    D[构建内部结构阶段] --> B
    D --> E[操作系统设计类资源]
    F[避免溢出阶段] --> B
    G[调用资源阶段] --> B
    H[回复信息阶段] --> B
    B --> I[提高编程安全性]
    C --> I
    E --> I

在输入验证阶段,编程指南类资源可以提供详细的输入验证方法和代码示例,黑客视角类资源则能让开发者了解攻击者可能利用的输入漏洞。在构建内部结构阶段,操作系统设计类资源有助于开发者理解系统底层机制,从而更好地设计安全的程序内部结构。避免缓冲区溢出、调用资源和回复信息等阶段,编程指南类资源都能提供关键的技术支持,最终共同提高编程的安全性。

6. 总结

安全编程是一个复杂且重要的领域,尤其是在类 Unix 系统上。通过遵循输入验证、避免缓冲区溢出、构建安全的程序内部结构、谨慎调用资源和回复信息等关键准则,并充分利用网络上丰富的相关资源,开发者可以显著提高程序的安全性。同时,了解不同资源在安全编程流程中的作用,能够更有针对性地学习和应用,从而在实际编程中更好地抵御各种潜在的安全威胁。希望广大开发者能够重视安全编程,不断学习和实践,为构建更安全的软件环境贡献力量。

本 PPT 介绍了制药厂房中供配电系统的总体概念与设计要点,内容包括: 洁净厂房的特点及其对供配电系统的特殊要求; 供配电设计的一般原则与依据的国家/行业标准; 从上级电网到工厂变电所、终端配电的总体结构与模块化设计思路; 供配电范围:动力配电、照明、通讯、接地、防雷与消防等; 动力配电中电压等级、接地系统形式(如 TN-S)、负荷等级与可靠性、UPS 配置等; 照明的电源方式、光源选择、安装方式、应急与备用照明要求; 通讯系统、监控系统在生产管理与消防中的作用; 接地与等电位连接、防雷等级与防雷措施; 消防设施及其专用供电(消防泵、排烟风机、消防控制室、应急照明等); 常见高压柜、动力柜、照明箱等配电设备案例及部分设计图纸示意; 公司已完成的典型项目案例。 1. 工程背景与总体框架 所属领域:制药厂房工程的公用工程系统,其中本 PPT 聚焦于供配电系统。 放在整个公用工程中的位置:与给排水、纯化水/注射用水、气体与热力、暖通空调、自动化控制等系统并列。 2. Part 01 供配电概述 2.1 洁净厂房的特点 空间密闭,结构复杂、走向曲折; 单相设备、仪器种多,工艺设备昂贵、精密; 装修材料与工艺材料种多,对尘埃、静电等更敏感。 这些特点决定了:供配电系统安全可靠、减少积尘、便于清洁和维护。 2.2 供配电总则 供配电设计应满足: 可靠、经济、适用; 保障人身与财产安全; 便于安装与维护; 采用技术先进的设备与方案。 2.3 设计依据与规范 引用了大量俄语标准(ГОСТ、СНиП、SanPiN 等)以及国家、行业和地方规范,作为设计的法规基础文件,包括: 电气设备、接线、接地、电气安全; 建筑物电气装置、照明标准; 卫生与安全相关规范等。 3. Part 02 供配电总览 从电源系统整体结构进行总览: 上级:地方电网; 工厂变电所(10kV 配电装置、变压
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值