MHWJW16-代码编写安全规范-V1.1-ok
代码编写规范说明书

代码编写规范说明书(c#.net与)目录1 目的2 范围3 注释规范3.1 概述3.2 自建代码文件注释3.3 模块(类)注释3.4 类属性注释3.5 方法注释3.6 代码间注释4 命名总体规则5 命名规范5.1 变量(Variable)命名5.2 常量命名5.3 类(Class)命名5.4 接口(Interface)命名5.5 方法(Method)命名5.6 名称空间Namespace)命名6 编码规则6.1 错误检查规则6.2 大括号规则6.3 缩进规则6.4 小括号规则6.5 If Then Else规则6.6 比较规则6.7 Case规则6.8 对齐规则6.9 单语句规则6.10 单一功能规则6.11 简单功能规则6.12 明确条件规则6.13 选用FALSE规则6.14 独立赋值规则6.15 定义常量规则6.16 模块化规则6.17 交流规则7 编程准则7.1 变量使用7.2 数据库操作7.3 对象使用7.4 模块设计原则7.5 结构化要求7.6 函数返回值原则8 代码包规范8.1 代码包的版本号8.2 代码包的标识9 代码的控制9.1 代码库/目录的建立9.2 代码归档10 输入控制校验规则10.1 登陆控制10.2 数据录入控制附件1:数据类型缩写表附件2:服务器控件名缩写表1 目的一.为了统一公司软件开发设计过程的编程规范二.使网站开发人员能很方便的理解每个目录,变量,控件,类,方法的意义三.为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。
四.编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软件开发工作2 范围本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。
3 注释规范3.1 概述a) 注释要求英文及英文的标点符号。
b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。
作弊防控系统工程安装V1.1 0460产品(全屏段式1)

MHWJW33-恶意代码防范管理-V1.1-网络安全等级保护(等保2.0)管理制度模板-系统运维管理

文档信息制度编号: 生效日期: 分发范围:解释部门: 版次:Ver1.1 页数: 4制定人: 审核人: 批准人: 传阅阅后执行并存档保密保密等级内部公开版本记录XX单位恶意代码防范管理1总则1.1目的为加强对计算机病毒的预防和治理,保护信息系统安全,根据公安部《计算机病毒防治管理办法》以及有关计算机病毒防治的规定,制定本办法。
1.2范围本管理办法适用于XX单位所有服务器和终端操作系统。
本办法所称的计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。
1.3职责各计算机系统使用人负责本机防病毒客户端的维护,病毒查杀。
信息中心系统管理员负责计算机病毒防治的日常管理工作。
2管理细则2.1普通用户职责(1)XX单位计算机必须安装和使用统一要求的病毒查杀软件或查杀工具,并按要求进行操作和使用,认真做好相关参数设置、病毒升级以及计算机补丁安装等工作。
(2)计算机操作人员要学会病毒查杀软件或查杀工具的安装、使用;开启防病毒软件的实时更新;未经允许不得关闭病毒监控程序,不得违反规定设置和修改病毒监控条件;不得安装和使用非正版操作系统及软件;不得安装和使用与工作无关的文件、软件及媒体;更不得制作、输入、传播计算机病毒,危害XX单位信息系统安全。
(3)任何部门和个人在使用购置、维修、接入的计算机设备时,在使用网络下载的或移动介质报送的文件、软件及媒体时,在使用接入上过外网的笔记本、移动介质等设备时,必须坚持“先杀毒后使用”原则,先进行病毒检测,确认无病毒后方可使用。
(4)各科室部门要加强网络安全管理,利用网络传送数据、文件等内容时,要坚持:传输前先检测,数据接收后,先检测后使用的原则,先进行病毒检测,确认无病毒后方可使用。
要加强互联网安全管理,严格互联网使用审批,内外网要严格采取物理隔离措施,计算机、移动介质不准在内外网混用。
(5)各部门计算机出现异常现象或发现不能清除的病毒时,应立即与网络断开,并停止使用,同时报信息中心处理。
操作规程编制 导则

1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.10 编制审批具体执行《生产文件审批表格式》 (附件 2)。 2.11 在规程目录的前面应加一个编制说明,明确规程的制定 和修订的原因,规程的使用范围,规程中所包括的产品以及 相应生产装置的规模。
电力行业信息系统安全等级保护基本要求三级

电力行业信息系统安全等级保护基本要求1 第三级基本要求 (1)1.1 技术要求 (1)1.1.1 物理安全 (1)1.1.1.1 物理位置的选择(G3) (1)1.1.1.2 物理访问控制(G3) (1)1.1.1.3 防盗窃和防破坏(G3) (2)1.1.1.4 防雷击(G3) (2)1.1.1.5 防火(G3) (2)1.1.1.6 防水和防潮(G3) (3)1.1.1.7 防静电(G3) (3)1.1.1.8 温湿度控制(G3) (3)1.1.1.9 电力供应(A3) (3)1.1.1.10 电磁防护(S3) (4)1.1.2 网络安全 (4)1.1.2.1 结构安全(G3) (4)1.1.2.2 访问控制(G3) (5)1.1.2.3 安全审计(G3) (6)1.1.2.4 边界完整性检查(S3) (6)1.1.2.5 入侵防范(G3) (7)1.1.2.6 恶意代码防范(G3) (7)1.1.2.7 网络设备防护(G3) (7)1.1.3 主机安全 (8)1.1.3.1 身份鉴别(S3) (8)1.1.3.2 访问控制(S3) (9)1.1.3.3 安全审计(G3) (10)1.1.3.4 剩余信息保护(S3) (11)1.1.3.5 入侵防范(G3) (11)1.1.3.6 恶意代码防范(G3) (11)1.1.3.7 资源控制(A3) (12)1.1.4 应用安全 (12)1.1.4.1 身份鉴别(S3) (12)1.1.4.2 访问控制(S3) (13)1.1.4.3 安全审计(G3) (14)1.1.4.4 剩余信息保护(S3) (14)1.1.4.5 通信完整性(S3) (15)1.1.4.6 通信保密性(S3) (15)1.1.4.7 抗抵赖(G3) (15)1.1.4.8 软件容错(A3) (15)1.1.4.9 资源控制(A3) (16)1.1.5 数据安全 (16)1.1.5.1 数据完整性(S3) (16)1.1.5.2 数据保密性(S3) (17)1.1.5.3 备份和恢复(A3) (17)1.2 管理要求 (17)1.2.1 安全管理制度 (17)1.2.1.1 管理制度(G3) (17)1.2.1.2 制定和发布(G3) (18)1.2.1.3 评审和修订(G3) (19)1.2.2 安全管理机构 (19)1.2.2.1 岗位设置(G3) (19)1.2.2.2 人员配备(G3) (19)1.2.2.3 资金保障(G3) (20)1.2.2.4 授权和审批(G3) (20)1.2.2.5 沟通和合作(G3) (21)1.2.2.6 审核和检查(G3) (21)1.2.3 人员安全管理 (22)1.2.3.1 人员录用(G3) (22)1.2.3.2 人员离岗(G3) (22)1.2.3.3 人员考核(G3) (23)1.2.3.4 安全意识教育和培训(G3) (23)1.2.3.5 外部人员访问管理(G3) (23)1.2.4 系统建设管理 (24)1.2.4.1 系统定级(G3) (24)1.2.4.2 安全方案设计(G3) (24)1.2.4.3 产品采购和使用(G3) (25)1.2.4.4 自行软件开发(G3) (26)1.2.4.5 外包软件开发(G3) (26)1.2.4.6 工程实施(G3) (27)1.2.4.7 测试验收(G3) (27)1.2.4.8 系统交付(G3) (27)1.2.4.9 系统备案(G3) (28)1.2.4.10 等级测评(G3) (28)1.2.4.11 安全服务商选择(G3) (29)1.2.5 系统运维管理 (29)1.2.5.1 环境管理(G3) (29)1.2.5.2 资产管理(G3) (30)1.2.5.3 介质管理(G3) (30)1.2.5.4 设备管理(G3) (31)1.2.5.5 监控管理和安全管理中心(G3) (32)1.2.5.6 网络安全管理(G3) (32)1.2.5.7 系统安全管理(G3) (33)1.2.5.8 恶意代码防范管理(G3) (34)1.2.5.9 密码管理(G3) (35)1.2.5.10 变更管理(G3) (35)1.2.5.11 备份与恢复管理(G3) (35)1.2.5.12 安全事件处置(G3) (36)1.2.5.13 应急预案管理(G3) (37)1 第三级基本要求1.1 技术要求1.1.1 物理安全1.1.1.1 物理位置的选择(G3)本项要求包括:a) 机房和办公场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的高层或地下室,以及用水设备的下层或隔壁,如果不可避免,应采取有效防水措施。
密码学答案

《密码学原理与实践(第三版)》课后习题参考答案(由华中科技大学信安09级提供)第一章1.1(李怡)(a)51 (b)30 (c)81 (d)74221.2(贾同彬)证明:令t1= (-a)mod m ,t2=m-(a mod m),则t1≡t2(mod m).又 0<t1<m,0<t2<m, (最小非负剩余系中每个剩余类只有一个代表元)所以t1=t2.1.3 (张天翼) 证明充分性:若(mod )a b m ≡,则可得a b km =+,设b jm r =+,0r m ≤<,j N ∈,则有()a k j m r =++,故有mod a m r =,由假设得mod b m r =,故mod mod a m b m =证明必要性:若mod mod a m b m =,则可设mod mod a m b m r ==,则有a km r =+,b jm r =+,其中,j k N ∈,因此()a b k j m -=-,即m a b -,故(mod )a b m ≡ 综上,问题得证1.4 (李怡),0,mod ,.,-0,1,a km r r m r a ma r a km k m a r a a a k m r k k m m m m =+≤<=⎢⎥=-=⎢⎥⎣⎦-⎢⎥=-<≤-<≤=⎢⎥⎣⎦令则而所以只需证明因为所以即1.5 (李志远)穷举密钥法来破解移位密码即将这个字符串每个字母移位1,2,3…26次,然后判断这26个字符串哪个符合英语规则。
故我编写 如下的C++来实现如此功能 #include<iostream> using namespace std; char change(char word) {if(word=='Z')return 'A'; else return word+1; }int main(){cout<<"please input the string"<<endl;char string1[43];cin>>string1;int n;for(n=1;n<=26;n++){int num;for(num=0;num<43;num++){string1[num]=change(string1[num]);}cout<<string1<<endl<<"for turn "<<n<<endl;}}解释:1.代码专为本题编写,故输入字符数不能多于43个,且输入范围仅限大写英语字母2.将题中的42个字母BEEAKFYDJXUQYHYJIQRYHTYJIQFBQFBQDUYJIIKFUHC输入并回车3.得到的结果CFFBLGZEKYVRZIZKJRSZIUZKJRGCREVZKJJLGVIDREfor turn 1DGGCMHAFLZWSAJALKSTAJVALKSHDSFWALKKMHWJESFfor turn 2EHHDNIBGMAXTBKBMLTUBKWBMLTIETGXBMLLNIXKFTGfor turn 3FIIEOJCHNBYUCLCNMUVCLXCNMUJFUHYCNMMOJYLGUHfor turn 4GJJFPKDIOCZVDMDONVWDMYDONVKGVIZDONNPKZMHVIfor turn 5HKKGQLEJPDAWENEPOWXENZEPOWLHWJAEPOOQLANIWJfor turn 6ILLHRMFKQEBXFOFQPXYFOAFQPXMIXKBFQPPRMBOJXKfor turn 7JMMISNGLRFCYGPGRQYZGPBGRQYNJYLCGRQQSNCPKYLfor turn 8KNNJTOHMSGDZHQHSRZAHQCHSRZOKZMDHSRRTODQLZMfor turn 9LOOKUPINTHEAIRITSABIRDITSAPLANEITSSUPERMANfor turn 10MPPLVQJOUIFBJSJUTBCJSEJUTBQMBOFJUTTVQFSNBOfor turn 11NQQMWRKPVJGCKTKVUCDKTFKVUCRNCPGKVUUWRGTOCPfor turn 12ORRNXSLQWKHDLULWVDELUGLWVDSODQHLWVVXSHUPDQfor turn 13PSSOYTMRXLIEMVMXWEFMVHMXWETPERIMXWWYTIVQERfor turn 14 QTTPZUNSYMJFNWNYXFGNWINYXFUQFSJNYXXZUJWRFSfor turn 15 RUUQAVOTZNKGOXOZYGHOXJOZYGVRGTKOZYYAVKXSGTfor turn 16 SVVRBWPUAOLHPYPAZHIPYKPAZHWSHULPAZZBWLYTHUfor turn 17 TWWSCXQVBPMIQZQBAIJQZLQBAIXTIVMQBAACXMZUIVfor turn 18 UXXTDYRWCQNJRARCBJKRAMRCBJYUJWNRCBBDYNAVJWfor turn 19 VYYUEZSXDROKSBSDCKLSBNSDCKZVKXOSDCCEZOBWKXfor turn 20 WZZVFATYESPLTCTEDLMTCOTEDLAWLYPTEDDFAPCXLYfor turn 21 XAAWGBUZFTQMUDUFEMNUDPUFEMBXMZQUFEEGBQDYMZfor turn 22 YBBXHCVAGURNVEVGFNOVEQVGFNCYNARVGFFHCREZNAfor turn 23 ZCCYIDWBHVSOWFWHGOPWFRWHGODZOBSWHGGIDSFAOBfor turn 24 ADDZJEXCIWTPXGXIHPQXGSXIHPEAPCTXIHHJETGBPCfor turn 25 BEEAKFYDJXUQYHYJIQRYHTYJIQFBQDUYJIIKFUHCQDfor turn 26经过英语分析,发现当移位密码密钥为17时,字符串有英文含义LOOK UP IN THE AIR ITS A BIRD ITS A PLANE ITS SUPERMAN (看天上,是一只鸟,是一架飞机,是一位超人)故移位密码密钥为171.6(司仲峰)对合密钥为 0和131.7(陈诗洋)(a) m=30=2*3*5φ(30)=30*(1-1/2)*(1-1/3)*(1-1/5)=8故密钥量是 8*30=240(b)m=100=22*52φ(100)=100*(1-1/2)*(1-1/5)=40故密钥量是 40*100=4000(c)m=1225=52*72φ(1225)=1225*(1-1/5)*(1-1/7)=840故密钥量是 840*1225=10290001.8(周玉坤)解:在中若元素有逆,则必有gcd(a,m)=1;若元素a存在逆使得a=1,利用广义欧几里得除法,找到整数s和t,使得: sa+tm=1,则=s(modm)是a的逆。
纬地道路设计软件教程

纬地道路设计软件( HintCAD)教程目录第一章系统主要功能及常规应用步骤 (4)1.1系统主要功能 (4)1.2系统应用常规步骤 (8)1.3系统版本及安装说明 (10)第二章纬地设计向导与工程管理 (18)2.1纬地设计向导 (18)2.2工程管理 (24)2.3纬地工程中心 (27)第三章路线平面线形设计 (29)3.1前言 (29)3.2平面线形设计方法之一“曲线设计法〞 (29)3.3平曲线的设计方法之二“交点设计法〞 (41)3.4平面自动分图 (45)第四章纵、横断面数据准备与纵断面设计绘图 (49)4.1纵断面地面线数据输入 (49)4.2横断面地面线数据输入 (49)4.3纵断面动态拉坡设计 (50)4.4路线纵断面图绘制 (53)4.5边沟、排水沟沟底标高设计 (55)第五章路基设计计算 (56)5.1路基设计计算 (56)5.2路基超高与加宽的计算 (57)第六章参数化横断面设计绘图................................................................................ 错误!未定义书签。
6.1横断面设计与绘图.......................................................................................... 错误!未定义书签。
6.2横断面修改...................................................................................................... 错误!未定义书签。
6.3挖台阶处理...................................................................................................... 错误!未定义书签。
密码学答案

《密码学原理与实践(第三版)》课后习题参考答案(由华中科技大学信安09级提供)第一章1.1(李怡)(a)51 (b)30 (c)81 (d)74221.2(贾同彬)证明:令t1= (-a)mod m ,t2=m-(a mod m),则t1≡t2(mod m).又 0<t1<m,0<t2<m, (最小非负剩余系中每个剩余类只有一个代表元)所以t1=t2.1.3 (张天翼) 证明充分性:若(mod )a b m ≡,则可得a b km =+,设b jm r =+,0r m ≤<,j N ∈,则有()a k j m r =++,故有mod a m r =,由假设得mod b m r =,故mod mod a m b m =证明必要性:若mod mod a m b m =,则可设mod mod a m b m r ==,则有a km r =+,b jm r =+,其中,j k N ∈,因此()a b k j m -=-,即m a b -,故(mod )a b m ≡ 综上,问题得证1.4 (李怡),0,mod ,.,-0,1,a km r r m r a ma r a km k m a r a a a k m r k k m m m m =+≤<=⎢⎥=-=⎢⎥⎣⎦-⎢⎥=-<≤-<≤=⎢⎥⎣⎦令则而所以只需证明因为所以即1.5 (李志远)穷举密钥法来破解移位密码即将这个字符串每个字母移位1,2,3…26次,然后判断这26个字符串哪个符合英语规则。
故我编写 如下的C++来实现如此功能 #include<iostream> using namespace std; char change(char word) {if(word=='Z')return 'A'; else return word+1; }int main(){cout<<"please input the string"<<endl;char string1[43];cin>>string1;int n;for(n=1;n<=26;n++){int num;for(num=0;num<43;num++){string1[num]=change(string1[num]);}cout<<string1<<endl<<"for turn "<<n<<endl;}}解释:1.代码专为本题编写,故输入字符数不能多于43个,且输入范围仅限大写英语字母2.将题中的42个字母BEEAKFYDJXUQYHYJIQRYHTYJIQFBQFBQDUYJIIKFUHC输入并回车3.得到的结果CFFBLGZEKYVRZIZKJRSZIUZKJRGCREVZKJJLGVIDREfor turn 1DGGCMHAFLZWSAJALKSTAJVALKSHDSFWALKKMHWJESFfor turn 2EHHDNIBGMAXTBKBMLTUBKWBMLTIETGXBMLLNIXKFTGfor turn 3FIIEOJCHNBYUCLCNMUVCLXCNMUJFUHYCNMMOJYLGUHfor turn 4GJJFPKDIOCZVDMDONVWDMYDONVKGVIZDONNPKZMHVIfor turn 5HKKGQLEJPDAWENEPOWXENZEPOWLHWJAEPOOQLANIWJfor turn 6ILLHRMFKQEBXFOFQPXYFOAFQPXMIXKBFQPPRMBOJXKfor turn 7JMMISNGLRFCYGPGRQYZGPBGRQYNJYLCGRQQSNCPKYLfor turn 8KNNJTOHMSGDZHQHSRZAHQCHSRZOKZMDHSRRTODQLZMfor turn 9LOOKUPINTHEAIRITSABIRDITSAPLANEITSSUPERMANfor turn 10MPPLVQJOUIFBJSJUTBCJSEJUTBQMBOFJUTTVQFSNBOfor turn 11NQQMWRKPVJGCKTKVUCDKTFKVUCRNCPGKVUUWRGTOCPfor turn 12ORRNXSLQWKHDLULWVDELUGLWVDSODQHLWVVXSHUPDQfor turn 13PSSOYTMRXLIEMVMXWEFMVHMXWETPERIMXWWYTIVQERfor turn 14 QTTPZUNSYMJFNWNYXFGNWINYXFUQFSJNYXXZUJWRFSfor turn 15 RUUQAVOTZNKGOXOZYGHOXJOZYGVRGTKOZYYAVKXSGTfor turn 16 SVVRBWPUAOLHPYPAZHIPYKPAZHWSHULPAZZBWLYTHUfor turn 17 TWWSCXQVBPMIQZQBAIJQZLQBAIXTIVMQBAACXMZUIVfor turn 18 UXXTDYRWCQNJRARCBJKRAMRCBJYUJWNRCBBDYNAVJWfor turn 19 VYYUEZSXDROKSBSDCKLSBNSDCKZVKXOSDCCEZOBWKXfor turn 20 WZZVFATYESPLTCTEDLMTCOTEDLAWLYPTEDDFAPCXLYfor turn 21 XAAWGBUZFTQMUDUFEMNUDPUFEMBXMZQUFEEGBQDYMZfor turn 22 YBBXHCVAGURNVEVGFNOVEQVGFNCYNARVGFFHCREZNAfor turn 23 ZCCYIDWBHVSOWFWHGOPWFRWHGODZOBSWHGGIDSFAOBfor turn 24 ADDZJEXCIWTPXGXIHPQXGSXIHPEAPCTXIHHJETGBPCfor turn 25 BEEAKFYDJXUQYHYJIQRYHTYJIQFBQDUYJIIKFUHCQDfor turn 26经过英语分析,发现当移位密码密钥为17时,字符串有英文含义LOOK UP IN THE AIR ITS A BIRD ITS A PLANE ITS SUPERMAN (看天上,是一只鸟,是一架飞机,是一位超人)故移位密码密钥为171.6(司仲峰)对合密钥为 0和131.7(陈诗洋)(a) m=30=2*3*5φ(30)=30*(1-1/2)*(1-1/3)*(1-1/5)=8故密钥量是 8*30=240(b)m=100=22*52φ(100)=100*(1-1/2)*(1-1/5)=40故密钥量是 40*100=4000(c)m=1225=52*72φ(1225)=1225*(1-1/5)*(1-1/7)=840故密钥量是 840*1225=10290001.8(周玉坤)解:在中若元素有逆,则必有gcd(a,m)=1;若元素a存在逆使得a=1,利用广义欧几里得除法,找到整数s和t,使得: sa+tm=1,则=s(modm)是a的逆。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档信息
制度编号: 生效日期: 分发范围:
解释部门: 版次:Ver1.1 页数: 4
制定人: 审核人: 批准人:
传阅阅后执行并存档保密保密等级内部公开
版本记录
XX单位
代码编写安全规范
1.安全编码
1.1.通用编码原则
(一)不要信任外部的用户输入或系统。
应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作。
验证可能包括筛选特殊字符。
针对用户意外地错误使用和某些人通过在系统中注入恶意命令蓄意进行攻击的情况,这种预防性措施对应用程序起到了保护作用。
常见的例子包括SQL 注入攻击、脚本注入和缓冲区溢出。
此外,对于任何非受控的外部系统,都不要假定其安全性。
(二)不要通过隐藏来保障安全。
尝试使用让人迷惑的变量名来隐藏机密信息或将它们存储在不常用的文件位置,这些方法都不能提供安全保障,最好使用平台功能或使用已被证实可行的技术来保护数据。
(三)以安全的方式处理失效
如果应用程序失效(如发生严重错误等),要恰当的进行处理,一定
要保护好机密数据。
同时,在向最终用户返回错误消息时,不要公开任何不需要公开的信息。
也就是不要提供任何有助于攻击者发现应用程序漏洞的详细信息。
1.2.防范常见安全编码问题
在实现应用软件的编码阶段,也较容易因缺乏严谨思考或不好的编程习惯而引入安全问题,而且这些安全问题产生的危害作用非常大,因其产生的漏洞常常会造成应用程序中其他部分构筑的安全控制措施完全失效.目前存在的相当数量系统漏洞都是由编码问题造成的.因此要想保证应用软件的安全性,必须在编码阶段继续高度贯彻安全性原则.
在编码阶段,避免安全问题的基本原则如下:
程序只实现指定的功能
永远不要信任用户输入,对用户输入数据做有效性检查
必须考虑意外情况并进行处理
不要试图在发现错误之后继续执行
尽可能使用安全函数进行编程
小心、认真、细致地编程
目前在各种应用软件中常见的安全漏洞如下所示,应对这些常见问题进行有针对性的防范。
6.2.1.缓冲区溢出
如果对输入参数(字符串、整数等)处理时长度检查不严格,或对指针和数组越界访问不进行保护,就容易产生缓冲区溢出(Buffer Overflow)问题,这种问题主要出现在主要出现在C/C++ 语言编写的系统中,它造成的漏洞是当今绝大多数安全漏洞的主要根源。
在Java / .NET 等利用虚拟机的(托管)平台上不会产生此问题。
要避免此问题,则必须对系统输入数据进行严格的长度检查,废弃或截断超长的越界数据,同时利用基础库函数中的一些更为安全的字符串处理函数来处理数据,也可以利用编译器或代码复查工具提供的检查功能来尽早发现可能会产生问题的程序。
6.2.2.输入非法数据
恶意的攻击者会尝试在用户界面或接口中向系统输入恶意数据,以便期望绕过系统的安全限制,致使系统出甚至崩溃或其他非法目的,因此在编码时,须要对所有输入数据(包括用户在界面中输入的数据和其他应用系统通过接口传递的数据)进行严格的合法性检查。
6.2.3.SQL 注入式攻击
SQL 注入式(SQL Injection)攻击是一种典型的,因对输入数据不当处理而产生的非常严重的安全漏洞。
其原因是基于数据库的应用程序中经常会使用动态SQL 语句,而且在程序又没有对输入数据严格检查,致使攻击者能在界面层或接口层注入非法的SQL 语句,从而非法访问和破坏数据、反向工程、甚至对服务器本身造成威胁。
对于攻击者来说,SQL注入式攻击是一种简单有效的攻击方式,也是首选方式,尤其是在基于Web的应用程序中,因此开发人员必须重点关注此问题。
预防 SQL注入式攻击的手段就是严格检查用户输入的数据,要使用基础系统提供的参数化查询接口,避免使用字符串来构造动态 SQL查询。
同时对于数
据库对象的访问权限进行严格限制,避免恶意SQL语句破坏数据或系统。
6.2.4.拒绝服务攻击
拒绝服务攻击(Denial of Services -DoS)是指通过大量并发访问,使得服务器的有限特定资源(如网络、处理器、内存等)接近枯竭,使得服务器或操作系统失效的攻击行为。
DoS攻击的一般方式有发送大量数据包造成网络阻塞、执行内存泄漏代码使得系统可用内存越来越少、执行大量消耗CPU处理能力的代码、通过客户端发送大量的HTTP请求造成巨量Web点击以及SYN Flood等。
DoS攻击虽然不会直接对服务器本身带来损坏,但它使得真正的合法用户无法访问系统,从而可能带来业务上的损失。
除了DoS之外,攻击者还可能利用数量庞大的攻击源发起DDoS (Distributed DoS,分布式拒绝服务)攻击,其破坏和危害作用更大。
在编码时要注意防范可能的DoS攻击,具体措施包括提高软件行为的可管理性、主动拒绝异常连接、自动锁定攻击源、提供实时监控界面,能够有效甄别攻击源、具有(异常)事件报警机制、具有审核日志等。
通过这些主动或被动的防御手段,能够将DoS/DDoS攻击行为带来的破坏和危害降到较低水平。
6.2.5.敏感信息泄露
攻击者可能会通过暴力攻击、侦听、截取中间数据、反向工程、社会工程学(Social Engineering)等手段,获取访问凭据或机密信息,危及数据的私有性/安全性或者暴露敏感的商业数据,如用户名/口令、加密密钥、数据库连接串、商业敏感信息等。
因此在处理这些数据时,必须利用以密码技术为主的安全技术来进行强有力的机密性保护。
在使用密码技术时,一般要利用公开的、经过广泛验证的可靠加密算法,同时加强密钥的管理和保护(具体参见密码算法指南和密钥管理规范)。