跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
安全编程
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= 安全编程 = '''安全编程'''是指在软件开发过程中采用特定的技术和方法,以防止安全漏洞的产生,确保软件系统能够抵御恶意攻击和意外错误。它是[[计算机安全]]的重要组成部分,也是现代[[软件开发]]流程中的关键环节。 == 核心原则 == 安全编程遵循以下基本原则: 1. '''最小权限原则''':每个模块只应拥有完成其功能所需的最小权限 2. '''防御性编程''':假设所有外部输入都是不可信的 3. '''深度防御''':采用多层安全措施 4. '''失效安全''':系统在出错时应进入安全状态 5. '''安全默认值''':默认配置应是最安全的配置 == 常见漏洞类型 == {| class="wikitable" |+ 常见安全漏洞类型 ! 漏洞类型 !! 描述 !! 示例 | [[缓冲区溢出]] || 向缓冲区写入超过其容量的数据 || <syntaxhighlight lang="c"> char buffer[10]; strcpy(buffer, "这个字符串太长"); </syntaxhighlight> | [[SQL注入]] || 通过用户输入构造恶意SQL语句 || <syntaxhighlight lang="sql"> SELECT * FROM users WHERE username = 'admin' OR '1'='1'; </syntaxhighlight> | [[跨站脚本(XSS)]] || 在网页中注入恶意脚本 || <syntaxhighlight lang="html"> <script>alert('XSS攻击');</script> </syntaxhighlight> | [[跨站请求伪造(CSRF)]] || 诱使用户执行非预期的操作 || <mermaid> sequenceDiagram 攻击者网站->>用户浏览器: 包含恶意请求的页面 用户浏览器->>目标网站: 自动发送带有用户凭证的请求 </mermaid> |} == 防御技术 == === 输入验证 === 所有外部输入都应进行严格验证: <syntaxhighlight lang="python"> import re def validate_username(username): if not re.match(r'^[a-zA-Z0-9_]{4,20}$', username): raise ValueError("无效的用户名") </syntaxhighlight> === 安全编码实践 === * 使用参数化查询防止SQL注入: <syntaxhighlight lang="python"> # 不安全的方式 cursor.execute("SELECT * FROM users WHERE username = '" + username + "'") # 安全的方式 cursor.execute("SELECT * FROM users WHERE username = %s", (username,)) </syntaxhighlight> * 避免使用危险函数: <syntaxhighlight lang="c"> // 不安全的 gets(buffer); // 安全的 fgets(buffer, sizeof(buffer), stdin); </syntaxhighlight> === 密码安全 === 密码应使用强哈希算法存储: <math> \text{安全存储} = \text{Salt} \oplus \text{Hash(Password + Salt)} </math> 示例实现: <syntaxhighlight lang="python"> import hashlib import os def hash_password(password): salt = os.urandom(32) key = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000) return salt + key </syntaxhighlight> == 安全开发生命周期 == 安全应贯穿整个开发过程: <mermaid> graph TD A[需求分析] --> B[安全设计] B --> C[安全编码] C --> D[安全测试] D --> E[安全部署] E --> F[安全维护] </mermaid> == 工具与框架 == * [[静态代码分析]]工具:Coverity, SonarQube * 动态分析工具:OWASP ZAP, Burp Suite * 安全框架:Spring Security, OAuth, JWT == 实际案例 == === 心脏出血漏洞(Heartbleed) === 2014年发现的OpenSSL漏洞,由于未正确处理TLS心跳扩展包导致内存泄漏,影响公式: <math> \text{漏洞影响} = \frac{\text{敏感数据泄露}}{\text{修复时间}}</math> === Equifax数据泄露 === 2017年因未修复已知的Apache Struts漏洞导致1.43亿用户数据泄露,展示了[[补丁管理]]的重要性。 == 学习资源 == * [[OWASP]] Top 10 * [[CERT]]安全编码标准 * [[NIST]]安全指南 == 参见 == * [[网络安全]] * [[密码学]] * [[安全审计]] * [[渗透测试]] [[Category:计算机安全]] [[Category:编程实践]] [[Category:软件开发]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)