编码安全规范
软件开发中的安全编码规范

软件开发中的安全编码规范在软件开发中,安全是一个至关重要的问题。
安全编码规范是一种有效的措施,可以确保代码的安全性。
它提供一组指导原则和最佳实践,以帮助开发人员编写更加安全的代码。
本文将探讨软件开发中的安全编码规范。
1. 概述安全编码规范是一种定义编码要求的标准化方法。
它确保代码是高质量、可重用和安全的。
安全编码规范应该适用于代码开发、测试和维护的所有阶段。
安全编码规范应该涵盖以下方面:身份验证、授权、输入验证、输出编码、错误处理和安全配置管理等。
2. 身份验证编写安全的代码时,要确保用户的身份可以被正确地验证。
必须确保只有授权的用户能够访问应用程序的受保护资源。
身份验证是确保安全性的第一步。
在编写身份验证代码时,开发人员需要遵循以下安全编码规范:2.1 不要使用硬编码密码硬编码密码非常危险,因为它们通常存储在明文中。
而且,它们很容易被修改和猜到。
因此,应该避免在代码中硬编码密码。
2.2 不要在响应中包含敏感信息开发人员应该避免在响应中包含敏感信息。
响应中的任何敏感信息都应该被加密或从响应中删除。
3. 授权授权的目的是确保用户只能访问他们被授权使用的资源。
开发人员应该按照以下安全编码规范来编写授权代码:3.1 限制权限开发人员应该限制用户所拥有的权限,确保只能访问他们需要访问的资源。
在编写授权代码时,开发人员应该始终将最小化原则用于用户权限管理。
3.2 避免授权泄露开发人员应该始终注意授权信息的安全性。
不允许授权信息泄露才能达到授权的目的。
4. 输入验证输入验证是确保应用程序不会受到恶意输入攻击的关键步骤。
开发人员应该按照以下安全编码规范编写输入验证代码:4.1 提供正确的输入限制开发人员应该限制用户输入的长度和字符类型。
这将确保输入不会包含恶意代码。
4.2 避免SQL注入攻击开发人员应该避免SQL注入攻击。
在编写SQL代码时,变量应该被转义或被绑定到参数。
5. 输出编码输出编码的目的是确保Web应用程序不受到跨站脚本(XSS)和其他恶意攻击的影响。
IOS编码安全规范

移动端-IOS编码安全规范一、命名1、Bundle id命名:规则:采用反域名命名规则,所有使用小写字母。
一级包名为com,二级包名根据应用进行命名。
2、类命名:1)类命采用驼峰命名规则,即首字母必须大写,假如为词组,则每个单词的首字母必须大写,类名只能使用名词或名词词组,力求类名简朴,不允许出现冗余的单词。
2)继承自UIView的类以View结尾。
3)继承自ViewController的类以ViewController结尾。
4)保存数据的实体以Model结尾。
3、方法的命名:规则:方法名第一个单词是一个动词,其首字母小写,其后的所有单词首字母大写。
如:public Void threadRun()1)类中常用方法命名:类的获取方法假如返回值为单个值,一般在头部加上单词“get”。
假如返回值是数组或列表,要在头部加单词“find”如:public String getUserName() 、public list<String> findFriends() ●类的设立方法在被访问字段名的前面加上前缀 set如:public void setName(String name)●类的布尔型判断方法一般规定方法名使用单词 is或has 做前缀如:isNetWorkConnected()●构造方法应当用递增的方式写。
参数个数少的在前4、变量命名规则:第一个单词首字母必须小写,往后的单词需要符合驼峰命名规则,即第一个字母大写。
变量名尽也许的使用名词或名词词组。
同样规定简朴易懂,不允许出现无意义的单词。
如:String userName避免使用全局变量,假如用到必须加前缀‘ Pub_’,同时需要在变量名体现其类型。
5、成员变量命名与变量命名同样,在private字段前加上字母“m”。
6、控件变量命名规则:一般的变量命名后加上控件名称IBOutlet UILabel *userNameLabel;7、常量命名:规则:必须所有大写,单词间用下划线隔开。
软件开发中的安全编码规范研究

软件开发中的安全编码规范研究近年来,随着互联网和移动互联网行业的快速发展,软件开发已成为各大企业的核心竞争力之一。
在软件开发过程中,安全编码规范是一个重要的环节,它能够有效地保障软件的安全性,避免安全漏洞的出现。
本文将探讨软件开发中的安全编码规范研究。
一、什么是安全编码规范安全编码规范是一系列管理软件安全性开发的标准、规范和流程,目的是确保软件开发过程中能够对安全问题进行考虑和防范。
这一过程包括从设计、编写、测试、发布和运营等所有阶段和各个环节。
安全编码规范的出现源于软件开发的快速发展和网络安全问题的普遍存在。
软件开发过程中大部分的问题容易控制,但是安全问题却难以统一规范。
因此,安全编码规范的提出可以有效地规范软件开发过程中的安全问题,提供有效的解决办法和指导原则。
二、软件开发中的安全编码规范在软件开发中,安全编码规范主要涉及以下三个方面:1.安全编码标准安全编码标准是软件开发过程中的重要部分,它是对软件开发人员负责任的态度,是对软件产品质量的保证。
安全编码标准包括各种编码语言的不同标准和规则。
例如,对于Java开发人员来说,需要确保代码的可读性、可维护性,严格控制SQL注入和XSS攻击等。
2.安全编码工具安全编码工具是开发人员的重要辅助工具,主要用于检查、识别和修复安全漏洞。
安全编码工具可以自动化地检测复杂的安全问题和漏洞,大大提高软件开发质量和安全性。
在所有的编程语言中,都有很多安全编码工具,如SonarQube、FindBugs、Checkmarx等。
3.安全编码培训安全编码培训是软件开发中的重要环节,它可以提高软件开发人员的安全意识和技能。
通过培训,软件开发人员可以了解各种安全问题和安全编码规范,熟悉各种安全编码工具的使用方法,进而提高编写安全代码的能力。
三、安全编码规范的重要性在当今互联网时代,安全问题一直是广大用户关注的重点,而软件开发人员也一直在努力保障软件的安全性。
安全编码规范的出现,可以更好地规范软件开发过程中的安全问题,可以有效地避免被黑客攻击等不良后果,保障开发人员和终端用户的切身利益。
安全测试中的代码安全和安全编码规范

安全测试中的代码安全和安全编码规范代码安全在信息安全领域中占据着重要的地位。
任何一个系统都离不开代码,而代码的安全性对于系统的整体安全性至关重要。
安全测试是一种确保代码安全性的措施,而安全编码规范则是指导开发人员写出安全可靠的代码的标准。
1. 代码安全的重要性代码安全是保障系统安全的基石。
恶意代码、漏洞等安全问题都可能会导致系统遭受攻击或者数据泄漏。
因此,在系统开发的过程中,需要注重代码安全的考量,以减少潜在的风险。
2. 安全测试的作用安全测试是一种测试技术,旨在发现系统中存在的安全问题。
通过对系统中的各个部分进行渗透测试、代码审查等手段,发现存在的漏洞和风险,并提供相应的修复建议。
安全测试能够有效地识别和防范各种潜在的攻击手段,提高系统的安全性。
3. 安全编码规范的意义安全编码规范是指导开发人员在编写代码时应遵循的规则和标准。
通过遵循安全编码规范,可以减少代码中的安全漏洞和风险。
常见的安全编码规范包括输入验证、输出编码、错误处理等方面的要求。
遵循安全编码规范可以提高代码的质量和安全性,降低系统受到攻击的风险。
4. 安全测试的方法和手段安全测试可以采用多种方法和手段,包括但不限于以下几种:- 渗透测试:通过模拟攻击者的方式对系统进行测试,发现系统中可能存在的漏洞和弱点。
- 代码审查:对代码进行全面的检查,发现可能存在的安全问题,并提供相应的修复建议。
- 静态代码分析:通过对代码的静态分析,检测出潜在的安全问题和缺陷。
- 动态分析:通过运行时的测试和监控,发现系统运行时可能存在的安全问题。
5. 安全编码规范的常见要求安全编码规范通常包括以下几个方面的要求:- 输入验证:对于用户输入的数据,需要进行严格的验证和过滤,防止恶意数据的注入。
- 输出编码:对于输出到不同环境的数据,需要进行适当的编码,防止跨站脚本攻击等问题。
- 错误处理:对于系统中可能出现的错误和异常,需要进行合理的处理,避免信息泄露。
- 访问控制:限制不同用户对系统资源的访问权限,确保系统的安全性。
文件编码及管理制度

文件编码及管理制度一、总则为规范文件编码及管理,加强文件管理工作,提高文件管理水平,制定本制度。
二、适用范围本制度适用于本单位所有相关文件管理工作。
三、文件编码原则1.文件编码应当具有唯一性和确定性。
2.文件编码应当简洁明了,易于理解和使用。
3.文件编码应当便于检索和管理。
四、文件编码规则1.文件编码由字母和数字组成,字母表示文件类型,数字表示文件顺序。
2.文件类型按照文件的性质、用途和内容进行分类设定,编码由大写字母表示。
3.文件序号从01开始递增,每个文件类型单独编号。
五、文件编码管理1.文件编码由文件管理部门统一制定和管理。
2.每个文件类型的编码规则应当制定清晰详细的相关规范。
3.文件编码应当由专门人员进行审核和确认,确保其合法有效性。
六、文件编码的使用1.文件编码应当统一使用格式和规范,不得随意更改或篡改。
2.文件编码应当明显标注在文件正面右上角,并保持清晰可见。
3.文件编码应当及时录入电子文档管理系统,确保信息的完整性和真实性。
七、文件管理1.文件管理应当按照文件编码原则和规则进行规范操作。
2.文件管理应当按照文件密级和保管期限进行分类管理。
3.文件管理应当实行定期清理和归档,确保档案的整洁和完整。
八、文件保密1.文件保密应当严格按照文件密级进行管理和操作。
2.文件保密等级由文件管理部门统一制定和管理,不得私自修改或泄露。
3.文件保密涉及国家机密或单位重要机密的,应当按照国家相关规定进行处理。
九、文件备份1.文件应当定期进行电子备份,保证信息的安全和完整。
2.文件备份应当存放在专门的备份服务器或设备上,确保备份的可靠性和完整性。
3.文件备份的操作应当按照文件管理部门的相关规定进行,确保备份的及时性和准确性。
十、附则1.对于特殊情况下的文件编码和管理,应当根据实际情况进行适当调整和处理。
2.文件编码及管理制度的修订和变更应当经过相关部门的审批和确认。
3.本制度自发布之日起即生效,对以前的文件编码和管理操作有约束力。
代码安全编写规范

代码安全编写规范1.安全编码1.1.通用编码原则(一)不要信任外部的用户输入或系统。
应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作.验证可能包括筛选特殊字符。
针对用户意外地错误使用和某些人通过在系统中注入恶意命令蓄意进行攻击的情况,这种预防性措施对应用程序起到了保护作用.常见的例子包括SQL 注入攻击、脚本注入和缓冲区溢出。
此外,对于任何非受控的外部系统,都不要假定其安全性.(二)不要通过隐藏来保障安全.尝试使用让人迷惑的变量名来隐藏机密信息或将它们存储在不常用的文件位置,这些方法都不能提供安全保障,最好使用平台功能或使用已被证实可行的技术来保护数据.(三)以安全的方式处理失效如果应用程序失效(如发生严重错误等),要恰当的进行处理,一定要保护好机密数据.同时,在向最终用户返回错误消息时,不要公开任何不需要公开的信息。
也就是不要提供任何有助于攻击者发现应用程序漏洞的详细信息。
1.2.防范常见安全编码问题在实现应用软件的编码阶段,也较容易因缺乏严谨思考或不好的编程习惯而引入安全问题,而且这些安全问题产生的危害作用非常大,因其产生的漏洞常常会造成应用程序中其他部分构筑的安全控制措施完全失效。
目前存在的相当数量系统漏洞都是由编码问题造成的.因此要想保证应用软件的安全性,必须在编码阶段继续高度贯彻安全性原则.在编码阶段,避免安全问题的基本原则如下:➢程序只实现指定的功能➢永远不要信任用户输入,对用户输入数据做有效性检查➢必须考虑意外情况并进行处理➢不要试图在发现错误之后继续执行➢尽可能使用安全函数进行编程➢小心、认真、细致地编程目前在各种应用软件中常见的安全漏洞如下所示,应对这些常见问题进行有针对性的防范。
1.2.1缓冲区溢出如果对输入参数(字符串、整数等)处理时长度检查不严格,或对指针和数组越界访问不进行保护,就容易产生缓冲区溢出(Buffer Overflow)问题,这种问题主要出现在主要出现在C/C++ 语言编写的系统中,它造成的漏洞是当今绝大多数安全漏洞的主要根源。
代码安全编码规范

代码安全编码规范在计算机科学领域中,代码安全是至关重要的。
为了保护软件系统免受恶意攻击和漏洞利用的威胁,开发人员需要遵循一套严格的代码安全编码规范。
本文将介绍一些重要的规范和最佳实践,以帮助开发人员编写更安全的代码。
I. 代码注释规范良好的注释是代码可读性和可维护性的关键。
以下是一些建议:1. 在每个文件的开头添加版权和许可信息的注释,以明确代码的所有权和使用许可。
2. 在每个函数和方法的开头添加注释,描述其功能和输入/输出要求。
3. 注释应使用清晰简洁的语言编写,避免使用模糊或不恰当的术语。
4. 避免在注释中包含敏感信息,如API密钥或密码。
II. 输入验证和过滤异常输入是许多安全漏洞的根源。
开发人员应遵循以下准则:1. 对所有输入进行验证,包括用户输入、外部数据和网络请求等。
2. 使用白名单机制来验证输入,而不是黑名单机制。
即,只接受已验证的输入,而不是排除已知的恶意输入。
3. 对输入进行适当的过滤,删除或转义特殊字符,以防止跨站脚本攻击(XSS)和SQL注入等安全漏洞。
4. 针对不同类型的输入数据(例如数字、日期、邮箱地址等)使用适当的验证方法。
III. 密码和身份验证密码和身份验证是保护用户数据和系统安全的重要环节。
以下是一些建议:1. 存储密码时,应使用安全的哈希函数和加密算法,并加盐(salt)以增加破解的难度。
2. 鼓励用户选择强密码,并对密码进行复杂度检查。
3. 定期更新敏感数据(如密码)的加密算法和哈希函数,以适应新的安全标准。
4. 使用多因素身份验证(例如短信验证码、指纹识别等)来增强身份验证的安全性。
IV. 安全的数据存储与传输保护数据的机密性和完整性对于防止数据泄露和篡改至关重要。
以下是一些建议:1. 存储敏感数据(如用户密码和个人身份信息)时,应使用加密算法进行保护。
2. 对于网络传输的数据,使用安全的传输协议(例如HTTPS)进行保护。
3. 避免在URL中传递敏感数据,以防止数据泄露。
安全编码规范

安全编码规范
现代计算机应用程序的发展必须遵循一定的规范,以便在指定的环境下满足功能要求,达到安全、可靠、可维护的目的。
因此,安全编码规范作为一种编码规范,具有重要的意义和作用。
安全编码规范是指用于设计程序的可重复性和可靠性的全部标准,它包括编码规范,程序文档规范,测试规范和技术标准等。
它不仅可以提高软件产品的质量,而且可以提高应用程序的安全性,从而确保应用程序运行的安全性和稳定性。
在安全编码规范中,程序文档规范包括源代码的编写规范、文件结构规范、标签声明规范和命名规范等,它们主要解决程序的可读性、可维护性和可调试性问题。
它们有助于提高软件质量和降低软件故障率,也可以提高软件的可审计性。
此外,测试规范是安全编码规范中最重要的一部分。
它要求编码者制定可执行的测试程序,以便对应用程序进行全面的测试,以发现程序中的问题,及时修正漏洞。
它们可以帮助程序员有效地确定程序中存在的安全问题,有效地避免安全风险的发生。
最后,技术标准是安全编码规范的一个重要组成部分,它的目的是确保编程者和应用程序运行环境的稳定性和可靠性。
它关注的范围涉及到操作系统、网络协议、存储设备、软件开发框架等多方面。
总之,安全编码规范是现代计算机应用程序开发的基本准则,其中包含了编码规范、程序文档规范、测试规范和技术标准等多方
面的内容。
安全编码规范有助于提高程序的质量和可靠性,可以有效地确保应用程序的安全和稳定。
它对编码者的技术要求较高,但只有遵守安全编码规范,才能保障应用程序的安全性和可靠性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编码安全规范V1.0拟制:安全中心关键字:安全, 编码规范内容范畴:信息安全文档类别:开发技术文档保密级别:保密文件名:编码安全规范.doc 范围:全体员工版本: 1.0文档历史第一篇防止堆栈溢出类漏洞 (4)1.1对任何用户输入数据必须首先校验其长度,避免由于长度越界引起的缓冲区溢出。
(4)1.2C++和MFC程序字符串处理,选择现有的处理类库,禁止自己编写类库。
(4)1.3编码中禁止使用危险函数。
(4)1.4Unicode和ANSI缓冲区大小不匹配问题,必须注意大小计算的单位。
(5)1.5不将用户输入串拼接到任何格式字符串内。
避免字符格式化漏洞。
(6)1.6多个字符串存储在一个数据区时,尽量不依靠分隔符区分边界。
用户数据需要转义后传输,存储。
(7)1.7 C\C++中数组大小应该是sizeof(pArray)/sizof(pArray[0]) (7)1.8其他可能出现缓冲区溢出的函数 (7)第二篇防止SQL恶意构造性漏洞 (8)2.1 防止SQL恶意构造漏洞。
不直接使用外部输入的数字、字符串拼接SQL语句。
(8)2.2 web编程对于用户的任何输入必须做关键字过滤 (9)第三篇防止目录,文件名恶意构造性漏洞 (9)3.1必须:禁止使用外部输入字串作为下列函数的参数的一部分, 确保用户不能欺骗系统从而执行任意命令。
如果必须传递参数,从数据库、文件、管道、套接字等IPC通信方式传递。
(9)3.4验证所有可能的数据,甚至包括数据库中的数据,本地文件。
(10)3.5不将用户输入串直接加入html文件、js脚本、xml文件、配置文件、模板文件。
(10)3.6 避免使用有安全风险的windows API。
(10)第四篇防止内存堆溢出漏洞 (11)4.1分配内存,要判断返回值。
(11)4.2内存操作,特别是内存拷贝,必须检查长度是否超出分配内存的大小 (11)4.3对于无效指针,一定要置NULL,同时数组不要保存无效指针 (12)4.4时刻注意表达式是否会上溢、下溢 (13)4.5过程/函数中分配的资源(包括内存、文件等),在过程/函数退出之前要释放。
(13)4.6 MFC中使用CArray删除数据,需要倒后遍历. (13)第五篇其他一些注意事项 (14)5.1检查所有与安全相关的函数的返回值 (14)5.2调用可能被预测的函数前,引入随机量 (14)5.3 在代码中添加安全性注释 (15)关键词:摘要:为了提高公司软件安全质量,公司对安全编程作出统一的规范约束。
本规范由安全中心负责维护更新。
本规范是一个最初级的基本规范。
所有的开发者均应熟练掌握。
本规范的示例多以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 类、A TL 的CComBSTR 类或者STL 的string 类等等。
1.3编码中禁止使用危险函数。
禁止:\tcodescan\index.html建议:对于Windows Client Side 的代码,建议使用microsoft SDK中的strsafe.h提供的字符串安全函数,使用手册可以参考:/library/default.asp?url=/librar y/en-us/winui/winui/windowsuserinterface/resources/string s/usingstrsafefunctions.asp1.4Unicode和ANSI缓冲区大小不匹配问题,必须注意大小计算的单位。
Windows系列操作系统中,一般同时支持,但Unicode函数按宽字符(2个字节)计算大小,而不是按单字符(1个字节)计算大小。
示例:BOOL GetName(char *szName){WCHAR wszUserName [256 ]; //将ANSI名称转换到Unicode.MultiByteToWideChar(CP_ACP,0, szName, -1, wszUserName, sizeof(wszUserName));}WszUserName是一个Unicode字串、256个宽字符。
宽字符具有两个字节,因此实际上sizeof(wszUserName)是512字节。
以下是这个函数的正确写法:MultiByteToWideChar(CP_ACP,0, szName, -1, wszUserName, sizeof(wszUserName)/sizeof(wszUserName [0 ]));可能出现问题的函数还有:MultiWideToByteChar1.5不将用户输入串拼接到任何格式字符串内。
避免字符格式化漏洞。
可能用到格式字符串的函数如下:scanf(),fscanf(),sscanf(),vscanf(),vsscanf(),vfscanf(),printf(),fprintf(),sprintf(),vprintf(),vfprintf(),vsprintf(),syslog(),vsyslog(),err(),errx(),warn(),warnx(),verr(),verrx(),vwarn(),vwarnx(),setproctitle() (BSD系统与某些linux系统)示例:#include <stdio.h>int main(int argc, char *argv[]){char buffer[512]="";strncpy(buffer,argv[1],500);printf(buffer);//非安全编程实践:格式控制串由外部提供,输入//%.622496x%.622496x%n类似的东西就会发生格式化漏洞return 0;}常见错误:printf("%s %d %d %d\n",buf,i,j); 个数不匹配sprintf(buff,fmt,ap);//当fmt为用户输入时1.6多个字符串存储在一个数据区时,尽量不依靠分隔符区分边界。
用户数据需要转义后传输,存储。
建议:在数据设计的时候,避免使用| / \ $ ,;:— + !\0等符号做多个字符串分隔符,目前较为安全可靠的办法是通过字符串长度来决定字符串的边界。
示例:char string[] = "user input:A string\tof ,,tokens\nand some more tokens";char seps[] = " ,\t\n";//这些分割符是不可靠的char *token;void main( void ){printf( "%s\n\nTokens:\n", string );/* Establish string and get the first token: */token = strtok( string, seps );while( token != NULL ){/* While there are tokens in "string" */printf( " %s\n", token );/* Get next token: */token = strtok( NULL, seps );}}1.7 C\C++中数组大小应该是sizeof(pArray)/sizof(pArray[0])示例:int pArray[10];//数组大小应该是sizeof(pArray)/sizeof (pArray[0]),以下访问越界for( int i=0; i<sizeof(pArray); i++)pArray[i] = 123;1.8其他可能出现缓冲区溢出的函数realpath()getopt()getpass()streadd()strecpy()strtrns()getwd()对这类函数的参数应该小心处理int main (int argc, char **argv){int oc;char *b_opt_arg;while((oc = getopt(argc, argv, "ngl:")) != -1){switch(oc){case 'n':printf("My name is Lyong.\n");break;case 'g':printf("Her name is Xxiong.\n");break;case 'l':b_opt_arg = optarg;printf("Our love is %s\n", optarg);break;}}return 0;}第二篇防止SQL恶意构造性漏洞本段落的编码规范,主要是防止恶意的SQL构造漏洞。
除了这个编码的规范以外,还必须在Database的访问模式上,采用更为安全的应用接口封装的模式。
在接入层,比如CGI等,严禁使用SQL-Client 来访问Database。
所有的Database接口必须封装在APP-Interface中。
详见《接入层安全规范》以及《DB层安全规范》。
2.1 防止SQL恶意构造漏洞。
不直接使用外部输入的数字、字符串拼接SQL语句。
数字串:应首先判断每个单字符的合法性,再将数字串转化为数字,最后应校验数字范围合法性。
不能直接调用atoi()。