- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Tencent编码安全规范
编码安全规范
V1.0
拟 制: 安全中心 关键字: 安全, 编码规范 内容范畴: 信息安全 文档类别: 开发技术文档 保密级别: 保密 文件名: 编码安全规范.doc 范围: 全体员工 版本: 1.0
文档历史
日期 作者 版本号 备注 wolfliu V0.1 applelin V0.2 2007-02-19 Tony, Coolcyang V0.3 分割了一下原来的V0.2的文档,抽出一个单列的格式,以便后续修改。 2007-2-28 applelin V0.4 根据新的格式整理并补充 2007-3-8 stevezheng V0.5 2007-3-12 Dum applelin V0.6 补充示例
第一篇 防止堆栈溢出类漏洞 5
1.1对任何用户输入数据必须首先校验其长度,避免由于长度越界引起的缓冲区溢出。 5
1.2C++和MFC程序字符串处理,选择现有的处理类库,禁止自己编写类库。 5
1.3编码中禁止使用危险函数。 5
1.4Unicode和ANSI缓冲区大小不匹配问题,必须注意大小计算的单位。 6
1.5不将用户输入串拼接到任何格式字符串内。避免字符格式化漏洞。 7
1.6多个字符串存储在一个数据区时,尽量不依靠分隔符区分边界。用户数据需要转义后传输,存储。 8
1.7 C\C++中数组大小应该是sizeof(pArray)/sizof(pArray[0]) 8
1.8其他可能出现缓冲区溢出的函数 8
第二篇 防止SQL恶意构造性漏洞 9
2.1 防止SQL恶意构造漏洞。 不直接使用外部输入的数字、字符串拼接SQL语句。 9
2.2 web编程对于用户的任何输入必须做关键字过滤 10
第三篇 防止目录,文件名恶意构造性漏洞 10
3.1必须:禁止使用外部输入字串作为下列函数的参数的一部分, 确保用户不能欺骗系统从而执行任意命令。如果必须传递参数,从数据库、文件、管道、套接字等IPC通信方式传递。 10
3.4验证所有可能的数据,甚至包括数据库中的数据,本地文件。 11
3.5不将用户输入串直接加入html文件、js脚本、xml文件、配置文件、模板文件。 12
3.6 避免使用有安全风险的windows API。 12
第四篇 防止内存堆溢出漏洞 13
4.1分配内存,要判断返回值。 13
4.2内存操作,特别是内存拷贝,必须检查长度是否超出分配内存的大小 13
4.3对于无效指针,一定要置NULL,同时数组不要保存无效指针 14
4.4时刻注意表达式是否会上溢、下溢 14
4.5过程/函数中分配的资源(包括内存、文件等),在过程/函数退出之前要释放。 15
4.6 MFC中使用CArray删除数据,需要倒后遍历. 15
第五篇 其他一些注意事项 15
5.1检查所有与安全相关的函数的返回值 15
5.2调用可能被预测的函数前,引入随机量 16
5.3 在代码中添加安全性注释 16
关键词:
摘 要:
为了提高公司软件安全质量,公司对安全编程作出统一的规范约束。
本规范由安全中心负责维护更新。
本规范是一个最初级的基本规范。所有的开发者均应熟练掌握。
本规范的示例多以C\C++为背景。
缩略语清单:
必须:强制必须遵守的原则。
建议:可以加以考虑的原则。
禁止:必须加以避免的原则。
示例:对此规则或建议从正、反两个方面给出例子。
本规范从属于编码层面,不包含应用安全架构设计,不包含应用安全部署以及应用安全运营等方面的内容。开发者除了本规范以外,还必须熟悉 App设计方面的安全规范,协议接口设计规范,熟悉部署层面安全规范,以及熟悉运营层面的安全规范。
在编码层面,我们主要关心以下内容:
(1) 防止堆栈溢出类漏洞
(*) 防止缓冲区溢出漏洞
(2) 防止恶意SQL构造性漏洞
(3) 防止文件名,路径恶意构造漏洞
(4) 防止内存堆溢出类漏洞,防止进程Core Dump 的漏洞
第一篇 防止堆栈溢出类漏洞
1.1对任何用户输入数据必须首先校验其长度,避免由于长度越界引起的缓冲区溢出。
字符串长度计算。尽量使用单独保存的长度变量或read等输入函数返回的长度来计算字符串,不能完全相信strlen()。
示例:
main(int argc, char *argv[]){
char buff[128]={0} ;
strcpy(buff,argv[1])//可能溢出
}
1.2C++和MFC程序字符串处理,选择现有的处理类库,禁止自己编写类库。
建议:使用MFC 的Cstring 类、ATL 的CComBSTR 类 或者STL 的strin
您可能关注的文档
- Sb2Te3拓扑绝缘体材料的第一性原理计算.doc
- SBW三相电力补偿式稳压器技术参数.docx
- SC7731 客户驱动配置介绍.pptx
- SCC 流变测试方法技术.ppt
- scCO2体系中SiO2纳米颗粒自组装行为的分子模拟.doc
- ScienceDirect数据库检索与利用.ppt
- SCR催化剂(脱销钛白粉)实用总结.ppt
- sci论文.ppt
- Scotchlite_presentation_for_Standard-2011.ppt
- SCR技术是主流 国内国四重卡车型汇总.doc
- DB44_T 2607.4-2025 滨海蓝碳碳汇能力调查与核算技术指南 第4部分:盐沼.pdf
- DB43_T 3178-2024 烟叶农场建设管理要求.pdf
- DB37_T 4838-2025 含氢分布式综合能源系统运行优化指南.pdf
- DB37_T 4834-2025 高速公路集中养护工作指南.pdf
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
文档评论(0)