ToB企服应用市场:ToB评测及商务社交产业平台

标题: 读软件开发安全之道:概念、设计与实行12不受信任的输入 [打印本页]

作者: 欢乐狗    时间: 2024-8-29 12:12
标题: 读软件开发安全之道:概念、设计与实行12不受信任的输入

1. 不受信任的输入

1.1. 不受信任的输入大概是编写安全代码的开发职员最关心的问题
1.2. 不受信任的输入是指那些不受你控制,并且大概被篡改的数据,包括所有进入系统但你不完全信任的数据
1.3. 任何来自外部并进入系统的数据都最好被认为是不受信任的
1.4. 环球最大的不可信输入来源无疑是互联网
2. 输入验证

2.1. 输入验证(或输入消毒)是一种防御性代码,它会对输入的内容施加限制,强制其服从相应的规则
2.2. 不受信任的输入通常会穿越系统,并向下延伸到多个受信任的组件中
2.3. 输入验证的基本工作是确保不受信任的输入能够符合设计规范,以便卑鄙代码能处理格式准确的数据
2.4. 我们编写的险些所有代码都只能在一个特定的限制内正常工作,它不能被用于极端情况
2.5. 缓解这种伤害的一种简单方法就是对输入施加人为的限制,清除所有有问题的输入
2.6. 关键是一致性,因此一个好的模式是在负责处理传入数据的第一层代码中执行输入验证,然后将有效的输入交给更深层的业务逻辑,这些业务逻辑可以自信地认为所有输入都是有效的
2.7. 宁可在冗余的输入验证上犯错,也不要面临产生微小漏洞的风险
3. 确定有效性

3.1. 输入验证一开始要确定什么是有效的
3.2. 一旦指定了有效值的范围,就很容易确定适合代码的数据范例
4. 验证标准

4.1. 大多数的输入验证查抄都包含几个标准,其中包括确保输入不会超过最大限制、数据以准确的格式传入,并且数据值在一个可接受的范围内
4.2. 查抄值的大小是一种快速测试,主要是为了避免你的代码遭受DoS威胁,DoS威胁会导致你的应用程序在接受数兆字节的不受信任的输入后,变得运行缓慢甚至瓦解
4.3. 步调
4.4. 确定值的有效范围大概是最主观的选择,但紧张的是要有具体的限制
4.5. 根据某个目的来思量输入的有效性会很有资助
4.6. 选择一个对用户更友爱的限制会更有意义
4.7. 输入验证的主要目的是确保无效输入不会通过验证
5. 拒绝无效输入

5.1. 拒绝不符合特定规则的输入,是最简单并且可以说是最安全的做法
5.2. 完全接受或拒绝是最干净妥当的做法,并且通常最容易做对
5.3. 每当人们直接提供输入(好比填写Web表格)时,最好能够提供充足的关于错误的信息,使他们能够更轻松地纠正错误并重新提交
5.4. 最佳实践
5.5. 最佳方法是编写文档,准确地描述预期的输入格式和其他约束
5.6. 在专业运行系统的输入验证中,会完全拒绝整批输入,而不是尝试处理部分有效的数据子集,这种做法大概最公道,由于验证不通过就表示有些输入不符合规范
6. 纠正无效输入

6.1. 完全接受有效输入并拒绝其他输入,这种做法既安全又简单,但绝对不是最好的做法
6.2. 假如我们不希望由于微小的错误而阻止人们继续的话,可以通过输入验证代码来尝试更正那些无效的输入,将它们转换为有效值,而不是直接拒绝输入
6.3. 根据用户的输入,以官方格式提供猜测出的相似地址,以供用户选择
6.4. 对于难度较高的验证需求来说,最好的办法是将输入设计得尽大概简单
6.5. 适当的输入验证需要谨慎的判定,但它也使软件系统更可靠、更安全
7. 字符串漏洞

7.1. 长度问题
7.2. Unicode问题
8. 注入攻击漏洞

8.1. 一种常见的软件技术能够构造一个字符串或数据结构(其中编码了要执行的操作)​,然后执行该字符串或数据结构来完成指定的任务
8.2. 假如攻击者可以改变操作的预期效果,那么这种影响大概会穿越信任边界,并由具有更高权限的软件执行
8.3. 包括但不限于
8.4. 路径遍历
8.5. 正则表达式
8.6. XML的伤害
9. 缓解注入攻击

9.1. 输入验证始终是很好的第一道防线,但思量到允许的输入中会包含的内容,仅此一项缓解措施不一定充足
9.2. 作为额外的防御层,要研究会形成的命令或语句的语法,并且要确保应用了所有必要的引用或转义,以确保不会堕落
9.3. 通常可以在源代码中轻松扫描出使注入攻击成为风险的伤害操作

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4