华为Web应用安全开发规范

DKBA

华为技术有限公司内部技术规范

DKBA 1606-XXXX.X

Web应用安全开发规范V1.5

2013年XX月XX日发布2013年XX月XX日实施

华为技术有限公司

Huawei Technologies Co., Ltd.

版权所有侵权必究

All rights reserved

修订声明Revision declaration

本规范拟制与解释部门:

网络安全能力中心&电信软件与核心网网络安全工程部

本规范的相关系列规范或文件:

《C&C++语言安全编程规范》《Java语言安全编程规范》

相关国际规范或文件一致性:

替代或作废的其它规范或文件:

相关规范或文件的相互关系:

《产品网络安全红线》和《电信软件与核心网业务部安全能力基线》中的Web 安全要求引用了本规范的内容,如果存在冲突,以本规范为准。

规范号主要起草部门专家主要评审部门专家修订情况

DKBA 1606-2007.4 安全解决方案:赵武42873,杨光磊57125,万振华55108 软件公司设计管理部:刘茂征11000,刘高峰63564,何伟祥33428 安全解决方案:刘海军12014,吴宇翔18167,吴海翔57182

接入网:彭东红27279

无线:胡涛46634

核心网:吴桂彬41508,甘嘉栋33229,马进32897,谢秀洪33194,张毅27651,张永锋40582

业软:包宜强56737,丁小龙63583,董鹏越60793,傅鉴杏36918,傅用成30333,龚连阳18753,胡海60017320,胡海华52463,李诚37517,李大锋54630,李战杰21615,刘创文65632,刘飞46266,刘剑51690,栾阳62227,罗仁钧65560,罗湘武06277,马亮60009259,孟咏喜22499,潘海涛27360,孙林46580,王福40317,王锦亮36430,王美玲60011866,王谟磊65558,王玉龙24387,杨娟60019875,张锋43381,张健60005645,张轶57143,邹韬51591 V1.0

何伟祥33428 刘高峰63564,龚连阳00129383,许汝波62966,吴宇翔00120395,王欢00104062,吕晓雨56987 V1.2

增加了Web Service、Ajax和上传和下载相关的安全规范。

何伟祥00162822 V1.3

增加了防止会话固定和防止跨站请求伪造的安全规范。

何伟祥00162822 V1.4

增加了“规则3.4.1”的实施指导;删除了“建议3.4.1”;修改了“6 配套CBB 介绍”的内容和获取方式。增加了“3.9 DWR”

何伟祥00162822

吴淑荣00197720

魏建雄00222906

谢和坤00197709

李田00042091

孙波00175839

朱双红00051429 王伟00207440

陈伟00141500

V1.5

增加“规则3.3.9、规则3.6.5、规则4.7.1、建议4.7.2、4.8 PHP”

增加“3.8 RESTful Web Service”

修改“规则3.2.2.8、规则3.2.2.3、规则3.4.1、规则4.6.1”

删除“3.2.1口令策略”和“规则3.1.3、规则3.2.3.8、规则4.7.1”

附件文档作为对象直接插入主文档

目录Table of Contents

1 概述7

1.1 背景简介7

1.2 技术框架7

1.3 使用对象8

1.4 适用范围8

1.5 用词约定9

2 常见WEB安全漏洞 9

3 WEB设计安全规范10

3.1 WEB部署要求10

3.2 身份验证11

3.2.1 口令11

3.2.2 认证11

3.2.3 验证码13

3.3 会话管理13

3.4 权限管理15

3.5 敏感数据保护16

3.5.1 敏感数据定义16

3.5.2 敏感数据存储16

3.5.3 敏感数据传输17

3.6 安全审计18

3.7 WEB SERVICE 19

3.8 RESTFUL WEB SERVICE 20

3.9 DWR 21

4 WEB编程安全规范22

4.1 输入校验22

4.2 输出编码25

4.3 上传下载26

4.4 异常处理26

4.5 代码注释26

4.6 归档要求27

4.7 其他28

4.8 PHP 29

5 WEB安全配置规范31

6 配套CBB介绍31

6.1 WAF CBB 31

6.2 验证码CBB 32

7 附件32

7.1 附件1 TOMCAT配置SSL指导32

7.2 附件2 WEB SERVICE 安全接入开发指导32

7.3 附件3 客户端IP鉴权实施指导 32

7.4 附件4 口令安全要求32

7.5 附件5 WEB权限管理设计规格说明书34

Web应用安全开发规范V1.5

1 概述

1.1 背景简介

在Internet大众化及Web技术飞速演变的今天,Web安全所面临的挑战日益严

峻。黑客攻击技术越来越成熟和大众化,针对Web的攻击和破坏不断增长,Web 安全风险达到了前所未有的高度。

许多程序员不知道如何开发安全的应用程序,开发出来的Web应用存在较多的安全漏洞,这些安全漏洞一旦被黑客利用将导致严重甚至是灾难性的后果。这并非危言耸听,类似的网上事故举不胜举,公司的Web产品也曾多次遭黑客攻击,甚至有黑客利用公司Web产品的漏洞敲诈运营商,造成极其恶劣的影响。

本规范就是提供一套完善的、系统化的、实用的Web安全开发方法供Web研发人员使用,以期达到提高Web安全的目的。本规范主要包括三大内容:Web设计安全、Web编程安全、Web配置安全,配套CBB,多管齐下,实现Web应用的整体安全性;本规范主要以JSP/Java编程语言为例。

1.2 技术框架

图1 典型的Web安全技术框架

图1 显示了典型的Web安全的技术框架和安全技术点,这些安全技术点,贯穿整个Web设计开发过程。上图各个区域中存在任何一点薄弱环节,都容易导致安全漏洞。

由于HTTP的开放性,Web应用程序必须能够通过某种形式的身份验证来识别用户,并确保身份验证过程是安全的,同样必须很好地保护用于跟踪已验证用户的会话处理机制。为了防止一些恶意输入,还要对输入的数据和参数进行校验。另外还要考虑Web系统的安全配置,敏感数据的保护和用户的权限管理,以及所有操作的安全审计。当然还要考虑代码安全,以及其他方面的威胁。

表1 列出了一些Web缺陷类别,并针对每类缺陷列出了由于设计不当可能会导致的潜在问题。针对这些潜在的问题,本规范中有相应的解决措施。

表1 Web 应用程序缺陷和由于不良设计可能导致的问题

缺陷类别由于不良设计可能导致的问题

身份验证身份伪造、口令破解、权限提升和未授权访问。

会话管理通过捕获导致会话劫持和会话伪造。

权限管理访问机密或受限数据、篡改和执行未授权操作。

配置管理未授权访问管理界面、更新配置数据、访问用户帐户和帐户配置文件。

敏感数据机密信息泄漏和数据篡改。

加密技术未授权访问机密数据或帐户信息。

安全审计未能识别入侵征兆、无法证明用户的操作,以及在问题诊断中存在困难。

输入检验通过嵌入查询字符串、窗体字段、Cookie 和HTTP 标头中的恶意字符串所执行的攻击。包括命令执行、跨站点脚本编写(XSS)、SQL 注入和缓冲区溢出攻击等。

参数操作路径遍历攻击、命令执行、此外还有跳过访问控制机制、导致信息泄露、权限提升和拒绝服务。

异常管理拒绝服务和敏感的系统级详细信息泄露。

1.3 使用对象

本规范的读者及使用对象主要为Web相关的需求分析人员、设计人员、开发人员、测试人员等。

1.4 适用范围

本规范的制定考虑了公司各种Web应用开发的共性,适合于公司绝大部分Web 产品,要求Web产品开发必须遵循。

对于嵌入式系统(如ADSL Modem、硬件防火墙)中的Web应用,由于其特殊性(CPU、内存、磁盘容量有限,没有成熟的Web容器),不强制遵循本规范的所有内容,只需遵循以下章节的规则要求:

3.2身份验证

3.3会话管理

3.5敏感数据保护

4.1输入校验

4.2输出编码

4.3上传下载

4.5代码注释

4.6归档要求

1.5 用词约定

规则:强制必须遵守的原则

建议:需要加以考虑的原则

说明:对此规则或建议进行相应的解释

实施指导:对此规则或建议的实施进行相应的指导

2 常见Web安全漏洞

Web应用的安全漏洞有很多,无法穷举。针对众多的Web漏洞,OWASP的专家们结合各自在各领域的应用安全工作经验及智慧,提出了十大Web应用程序安全漏洞,帮助人们关注最严重的漏洞。(OWASP即开放Web应用安全项目,是一个旨在帮助人们理解和提高Web应用及服务安全性的项目组织。)

表2 十大Web应用程序安全漏洞列表

序号漏洞名称漏洞描述

1 注入注入攻击漏洞,例如SQL、OS命令以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者访问未被授权的数据。

2 跨站脚本当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、或者将用户转向至恶意网站。

3 失效的身份认证和会话管理与身份认证和会话管理相关的应用程序功能往往得不到正确的实现,这就导致了攻击者破坏密码、密匙、会话令牌或攻击其他的漏洞去冒充其他用户的身份。

4 不安全的直接对象引用当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙,就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据。

5 跨站请求伪造一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的Web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。

6 安全配置错误好的安全需要对应用程序、框架、应用程序服务器、Web服

务器、数据库服务器和平台,定义和执行安全配置。由于许多设置的默认值并不是安全的,因此,必须定义、实施和维护所有这些设置。这包括了对所有的软件保护及时地更新,包括所有应用程序的库文件。

7 失败的URL访问权限限制许多Web应用程序在显示受保护的链接和按钮之前会检测URL访问权限。但是,当这些页面被访问时,应用程序也需要执行类似的访问控制检测,否则攻击者将可以伪装这些URL去访问隐藏的网页。

8 未经验证的重定向和前转Web应用程序经常将用户重定向和前转到其他网页和网站,并且利用不可信的数据去判定目的页面。如果没有得到适当验证,攻击者可以将受害用户重定向到钓鱼网站或恶意网站,或者使用前转去访问未经授权的网页。

9 不安全的加密存储许多Web应用程序并没有使用恰当的加密措施或Hash 算法保护敏感数据,比如信用卡、社会安全号码(SSN)、认证凭据等。攻击者可能利用这种弱保护数据实行身份盗窃、信用卡欺骗或或其他犯罪。

10 传输层保护不足应用程序时常没有身份认证、加密措施,甚至没有保护敏感网络数据的保密性和完整性。而当进行保护时,应用程序有时采用弱算法、使用过期或无效的证书,或不正确地使用这些技术。

3 Web设计安全规范

3.1 Web部署要求

规则3.1.1:如果Web 应用对Internet 开放,Web服务器应当置于DMZ区,在Web服务器与Internet之间,Web服务器与内网之间应当有防火墙隔离,并设置合理的策略。

规则3.1.2:如果Web 应用对Internet 开放,Web服务器应该部署在其专用的服务器上,应避免将数据库服务器或其他核心应用与Web服务器部署在同一台主机上。

说明:Web服务器比较容易被攻击,如果数据库或核心应用与Web服务器部署在同一台主机,一旦Web服务器被攻陷,那么数据库和核心应用也就被攻击者掌控了。

规则3.1.3:Web站点的根目录必须安装在非系统卷中。

说明:Web站点根目录安装在非系统卷,如单独创建一个目录/home/Web作为Web站点根目录,能够防止攻击者使用目录遍历攻击访问系统工具和可执行文件。

建议3.1.1:Web服务器与应用服务器需物理分离(即安装在不同的主机上),以提高应用的安全性。

建议3.1.2:如果Web应用系统存在不同的访问等级(如个人帐号使用、客户服务、管理),那么应该通过不同的Web服务器来处理来自不同访问等级的请求,而且Web应用应该鉴别请求是否来自正确的Web服务器。

说明:这样便于通过防火墙的访问控制策略和Web应用来控制不同访问等级的访问,比如通过防火墙策略控制,只允许内网访问管理Portal。

建议3.1.3:对于“客户服务”和“管理”类的访问,除了普通的认证,还应该增加额外的访问限制。

说明:额外的访问限制,可以限制请求来自企业内网,可以建立VPN,或采用双向认证的SSL;或采用更简单的办法,通过IP地址白名单对客户端的IP地址进行过滤判断,实施参考《附件3客户端IP鉴权实施指导》。

3.2 身份验证

3.2.1 口令

关于Web应用及容器涉及到的口令,请遵循《产品网络安全红线》的口令安全要求(详细内容请见:附件4 口令安全要求.xlsx)。

3.2.2 认证

规则3.2.2.1:对用户的最终认证处理过程必须放到应用服务器进行。

说明:不允许仅仅通过脚本或其他形式在客户端进行验证,必须在应用服务器进行最终认证处理(如果采用集中认证,那么对用户的最终认证就是放在集中认证服务器进行)。

规则3.2.2.2:网页上的登录/认证表单必须加入验证码。

说明:使用验证码的目的是为了阻止攻击者使用自动登录工具连续尝试登录,从而降低被暴力破解的可能。如果觉得验证码影响用户体验,那么可以在前3次登录尝试中不使用验证码,3次登录失败后必须使用验证码。验证码在设计上必须要考虑到一些安全因素,以免能被轻易地破解。具体实现细节请查看3.2.3验证码。如图:

图2 验证码

实施指导:

建议使用电信软件与核心网网络安全工程部提供的验证码CBB。

备注:对于嵌入式系统,如果实现验证码比较困难,可以通过多次认证失败锁定客户端IP的方式来防止暴力破解。

规则3.2.2.3:用户名、密码和验证码必须在同一个请求中提交给服务器,必须先判断验证码是否正确,只有当验证码检验通过后才进行用户名和密码的检验,否则直接提示验证码错误。

说明:如果验证码和用户名、密码分开提交,攻击者就可以绕过验证码校验(如:先手工提交正确的验证码,再通过程序暴力破解),验证码就形同虚设,攻击者依然可以暴力破解用户名及口令。

规则3.2.2.4:所有登录页面的认证处理模块必须统一。

说明:可以存在多个登录页面,但是不允许存在多个可用于处理登录认证请求的模块,防止不一致的认证方式。

规则3.2.2.5:所有针对其他第三方开放接口的认证处理模块必须统一。

规则3.2.2.6:认证处理模块必须对提交的参数进行合法性检查。

说明:具体输入校验部分请查看4.1输入校验。

规则3.2.2.7:认证失败后,不能提示给用户详细以及明确的错误原因,只能给出一般性的提示。

说明:可以提示:“用户名或者口令错误,登录失败”;不能提示:“用户名不存在”、“口令必须是 6 位”等等。

规则3.2.2.8:最终用户portal和管理portal分离。

说明:最终用户portal和管理portal分离,防止相互影响,防止来自用户面的攻击影响管理面。

实施指导:

将最终用户portal和管理portal分别部署在?煌?奈锢矸?务器;如果为了解决成本合设(部署在同一台物理服务器上),那么,必须做到端口分离(通过不同的端口提供Web服务),一般的Web容器(如tomcat)支持为不同的Web应用创建不同的端口。

规则3.2.2.9:禁止在系统中预留任何的后门帐号或特殊的访问机制。

规则3.2.2.10:对于重要的管理事务或重要的交易事务要进行重新认证,以防范会话劫持和跨站请求伪造给用户带来损失。

说明:重要的管理事务,比如重新启动业务模块;重要的交易事务,比如转账、余额转移、充值等。重新认证,比如让用户重新输入口令。

规则3.2.2.11:用户名和密码认证通过后,必须更换会话标识,以防止会话固定(session fixation)漏洞。

实施指导:

场景一:对于从HTTP转到HTTPS再转到HTTP(也就是仅在认证过程采用HTTPS,认证成功后又转到HTTP)的,在用户名和密码认证通过后增加以下行代码:request.getSession().invalidate();

HttpSession newSession=request.getSession(true);

Cookie cookie = new Cookie("JSESSIONID",newSession.getId());

cookie.setMaxAge(-1);

cookie.setSecure(false);

cookie.setPath(request.getContextPath());

response.addCookie(cookie);

场景二:对于全程采用HTTPS协议,或者全程采用HTTP协议的,在用户名和密码认证通过后增加以下行代码:

request.getSession().invalidate();

request.getSession(true);

建议3.2.2.1:管理页面建议实施强身份认证。

说明:如双因素认证、SSL双向证书认证、生物认证等;还可以通过应用程序限制只允许某些特定的IP地址访问管理页面,并且这些特定的IP地址可配置。

建议3.2.2.2:同一客户端在多次连续尝试登录失败后,服务端需要进行用户帐号或者是客户端所在机器的IP 地址的锁定策略,且该锁定策略必须设置解锁时长,超时后自动解锁。

说明:

登录失败应该提示用户:如果重试多少次不成功系统将会锁定。在锁定期间不允许该用户帐号(或者客户端所在机器的IP 地址)登录。

允许连续失败的次数(指从最后一次成功以来失败次数的累计值)可配置,取值范围为:0-99 次,0表示不执行锁定策略,建议默认:5 次。

锁定时长的取值范围为:0-999 分钟,建议默认:30 分钟,当取值为0 时,表示无限期锁定,只能通过管理员手动解锁(需要提供管理员对服务器锁定其它用户帐号/IP进行解锁的功能界面)。建议优先使用帐号锁定策略。

注意:应用程序的超级用户帐号不能被锁定,只能锁定操作的客户端所在的IP,这是为了防止系统不可用。特别说明:锁客户端IP策略存在缺陷,当用户使用proxy上网时,那么锁定客户端IP会导致使用该proxy上网的所有用户在IP锁定期间都不能使用该Web应用;锁定用户帐户的策略也存在缺陷,当攻击者不断尝试某帐户的口令,就给该帐户带来拒绝服务攻击,使该帐户不可用。

3.2.3 验证码

规则3.2.3.1:验证码必须是单一图片,且只能采用JPEG、PNG或GIF格式。

说明:验证码不能使用文本格式,不允许多图片组合(如用四个图片拼成的验证

码)。

规则3.2.3.2:验证码内容不能与客户端提交的任何信息相关联。

说明:在使用验证码生成模块时不允许接收来自客户端的任何参数,例如:禁止通过getcode.jsp?code=1234的URL请求,将1234作为验证码随机数。

规则3.2.3.3:验证码模块生成的随机数不能在客户端的静态页面中的网页源代码里出现。

说明:在客户端网页上点击鼠标右键、选择“查看源文件”时,必须看不到验证码模块生成的随机数。

规则3.2.3.4:验证码字符串要求是随机生成,生成的随机数必须是安全的。

说明:对于java语言可以使用类java.security.SecureRandom来生成安全的随机数。

规则3.2.3.5:验证码要求有背景干扰,背景干扰元素的颜色、位置、数量要求随机变化。

规则3.2.3.6:验证码在一次使用后要求立即失效,新的请求需要重新生成验证码。说明:进行验证码校验后,立即将会话中的验证码信息清空,而不是等到生成新的验证码时再去覆盖旧的验证码,防止验证码多次有效;注意:当客户端提交的验证码为空,验证不通过。

说明:

以上规则可以通过使用电信软件与核心网网络安??こ滩刻峁┑?验证码CBB来实现。

3.3 会话管理

规则3.3.1:使用会话cookie维持会话。

说明:目前主流的Web容器通过以下几种方式维持会话:隐藏域、URL重写、持久性cookie、会话cookie,但通过隐藏域、URL重写或持久性cookie方式维持的会话容易被窃取,所以要求使用会话cookie维持会话。如果条件限制必须通过持久性cookie维持会话的话,那么cookie信息中的重要数据部分如身份信息、计费信息等都必须进行加密。(cookie有两种:会话cookie和持久性cookie;会话cookie,也就是非持久性cookie,不设置过期时间,其生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了;会话cookie一般不存储在硬盘上而是保存在内存里。持久性cookie,设置了过期时间,被浏览器保存到硬盘上,关闭后再次打开浏览器,持久性cookie仍然有效直到超过设定的过期时间。)备注:对于嵌入式系统的Web,不适合本条规则,按“规则3.3.9”实施。

规则3.3.2:会话过程中不允许修改的信息,必须作为会话状态的一部分在服务器端存储和维护。

说明:会话过程中不允许修改的信息,例如,当用户通过认证后,其用户标识在整个会话过程中不能被篡改。禁止通过隐藏域或URL重写等不安全的方式存储和维护。对JSP语言,就是应该通过session对象进行存储和维护。

规则3.3.3:当Web应用跟踪到非法会话,则必须记录日志、清除会话并返回到认证界面。

说明:非法会话的概念就是通过一系列的服务端合法性检测(包括访问未授权资源,缺少必要参数等情况),最终发现的不是正常请求产生的会话。

规则3.3.4:禁止使用客户端提交的未经审核的信息来给会话信息赋值。

说明:防止会话信息被篡改,如恶意用户通过URL篡改手机号码等。

规则3.3.5:当用户退出时,必须清除该用户的会话信息。

说明:防止遗留在内存中的会话信息被窃取,减少内存占用。

实施指导:对于JSP或java语言使用如下语句:request.getSession().invalidate(); 规则3.3.6:必须设置会话超时机制,在超时过后必须要清除该会话信息。

说明:建议默认会话超时时间为10分钟(备注:对于嵌入式系统中的Web,建议默认超时时间为5分钟,以减少系统资源占用)。如果没有特殊需求,禁止使用自动发起请求的机制来阻止session超时。

规则3.3.7:在服务器端对业务流程进行必要的流程安全控制,保证流程衔接正确,防止关键鉴别步骤被绕过、重复、乱序。

说明:客户端流程控制很容易被旁路(绕过),因此流程控制必须在服务器端实现。

实施指导:可以通过在session对象中创建一个表示流程当前状态的标识位,用0、1、2、3、…、N分别表示不同的处理步骤,标识位的初始值为0,当接收到步骤N的处理请求时,判断该标识位是否为N-1,如果不为N-1,则表示步骤被绕过(或重复或乱序),拒绝受理,否则受理,受理完成后更改标识位为N。

规则3.3.8:所有登录后才能访问的页面都必须有明显的“注销(或退出)”的按钮或菜单,如果该按钮或菜单被点击,则必须使对应的会话立即失效。

说明:这样做是为了让用户能够方便地、安全地注销或退出,减小会话劫持的风险。

规则3.3.9:如果产品(如嵌入式系统)无法使用通用的Web容器,只能自己实现Web服务,那么必须自己实现会话管理,并满足以下要求:

采用会话cookie维持会话。

生成会话标识(session ID)要保证足够的随机、离散,以便不能被猜测、枚举,要求session ID要至少要32字节,要支持字母和数字字符集。

服务端必须对客户端提交的session ID的有效性进行校验。

说明:在嵌入式系统中部署Web应用,由于软硬件资源所限,往往无法使用通用的Web容器及容器的会话管理功能,只能自己实现。另外,为了节省内存,嵌入式webserver进程往往是动态启动,为了使session更快的超时,建议增加心跳机制,对客户端浏览器是否关闭进行探测,5s一个心跳,30s没有心跳则session超时,关闭该session。

3.4 权限管理

规则3.4.1:对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作。

说明:防止用户通过直接输入URL,越权请求并执行一些页面或servlet;建议通过过滤器实现。

实施指导:请参考“附件5 Web权限管理设计规格说明书.docx”。

规则3.4.2:授权和用户角色数据必须存放在服务器端,不能存放在客户端,鉴权处理也必须在服务器端完成。

说明:禁止将授权和角色数据存放在客户端中(比如cookie或隐藏域中),以防止被篡改。

规则3.4.3:一个帐号只能拥有必需的角色和必需的权限。一个组只能拥有必需的角色和必需的权限。一个角色只能拥有必需的权限。

说明:做到权限最小化和职责分离(职责分离就是分清帐号角色,系统管理帐号只用于系统管理,审计帐号只用于审计,操作员帐号只用于业务维护操作,普通用户帐号只能使用业务。)这样即使帐号被攻击者盗取,也能把安全损失控制在

最小的限度。

规则3.4.4:对于运行应用程序的操作系统帐号,不应使用“root”、“administrator”、“supervisor”等特权帐号或高级别权限帐号,应该尽可能地使用低级别权限的操作系统帐号。

规则3.4.5:对于应用程序连接数据库服务器的数据库帐号,在满足业务需求的前提下,必须使用最低级别权限的数据库帐号。

说明:根据业务系统要求,创建相应的数据库帐号,并授予必需的数据库权限。不能使用“sa”、“sysman”等管理帐号或高级别权限帐号。

3.5 敏感数据保护

3.5.1 敏感数据定义

敏感数据包括但不限于:口令、密钥、证书、会话标识、License、隐私数据(如短消息的内容)、授权凭据、个人数据(如姓名、住址、电话等)等,在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据。

3.5.2 敏感数据存储

规则3.5.2.1:禁止在代码中存储敏感数据。

说明:禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据,这样容易导致泄密。用于加密密钥的密钥可以硬编码在代码中。

规则3.5.2.2:禁止密钥或帐号的口令以明文形式存储在数据库或者文件中。

说明:密钥或帐号的口令必须经过加密存储。例外情况,如果Web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令,那么就不用强制遵循该规则,将该配置文件的属性改为只有属主可读写。

规则3.5.2.3:禁止在cookie 中以明文形式存储敏感数据。

说明:cookie信息容易被窃取,尽量不要在cookie中存储敏感数据;如果条件限制必须使用cookie存储敏感信息时,必须先对敏感信息加密再存储到cookie。规则3.5.2.4:禁止在隐藏域中存放明文形式的敏感数据。

规则3.5.2.5:禁止用自己开发的加密算法,必须使用公开、安全的标准加密算法。实施指导:

场景1:后台服务端保存数据库的登录口令

后台服务器登录数据库需要使用登录数据库的明文口令,此时后台服务器加密保存该口令后,下次登录时需要还原成明文,因此,在这种情况下,不可用不可逆的加密算法,而需要使用对称加密算法或者非对称加密算法,一般也不建议采用非对称加密算法。

推荐的对称加密算法:AES128、AES192、AES256。

场景2:后台服务端保存用户的登录口令

在该场景下,一般情况是:客户端提交用户名及用户口令,后台服务端对用户名及用户口令进行验证,然后返回验证的结果。此时,在后台服务端,用户口令可以不需要还原,因此建议使用不可逆的加密算法,对“用户名+口令”字符串进行加密。

推荐的不可逆加密算法:SHA256、SHA384、SHA512,HMAC-SHA256、HMAC-SHA384、HMAC-SHA512。

规则3.5.2.6:禁止在日志中记录明文的敏感数据。

说明:禁止在日志中记录明文的敏感数据(如口令、会话标识jsessionid等),防止敏感信息泄漏。

规则3.5.2.7:禁止带有敏感数据的Web页面缓存。

说明:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题。

实施指导:

在HTML页面的标签内加入如下代码:

在JSP页面的最前面加入如下代码:

<%

response.setHeader("Cache-Control","no-cache");

response.setHeader("Pragma","no-cache");

response.setDateHeader("Expires",0);

%>

注意:以上代码对于采用强制缓存策略的代理服务器不生效(代理服务器默认是不缓存的),要防止代理服务器缓存页面,可以在链接后加入一个随机数pageid,此时链接变成:http://localhost:8080/query.do?a=2&pageid=2245562, 其中2245562数字是随机生成的,每次请求此页面时,随机数都不同,IE始终认为此为一个新请求,并重新解析,生成新的响应页面。

3.5.3 敏感数据传输

规则3.5.3.1:带有敏感数据的表单必须使用HTTP-POST 方法提交。

说明:禁止使用HTTP-GET 方法提交带有敏感数据的表单(form),因为该方法使用查询字符串传递表单数据,易被查看、篡改。如果是使用servlet处理提交的表单数据,那么不在doGet方法中处理,只在doPost方法处理。

实施指导:

1. 对于JSP页面,将表单的属性method赋值为"post",如下

2. 如果是使用servlet处理提交的表单数据,那么只在doPost方法中处理,参考代码如下

public class ValidationServlet extends HttpServlet

{

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException

{

//对提交的表单数据进行校验

}

}

规则3.5.3.2:在客户端和服务器间传递明文的敏感数据时,必须使用带服务器端证书的SSL。

说明:如果在客户端和服务器间传递如帐号、口令等明文的敏感数据,必须使用带服务器端证书的SSL。由于SSL对服务端的CPU资源消耗很大,实施时必须考虑服务器的承受能力。

实施指导:

1. SSL的配置请参考《附件1 Tomcat配置SSL指导》。

2. Web应用中,从https切换到http过程中会丢失session,无法保持会话的连续。解决的办法就是用http-https-http过程代替https-http过程,保证会话的连续性。原因:当https请求转为http请求的时候,因为原先的session的secure 属性值是true,无法再http协议中传输,因此,系统生成新的session,且新的session没有继承旧session的属性和值,因此,无法保持会话连续。而http-https-http这个过程,session始终不变,因此,可以保持会话连???

规则3.5.3.3:禁止在URL中携带会话标识(如jsessionid)。

说明:由于浏览器会保存URL历史记录,如果URL中携带会话标识,则在多人共用的PC上会话标识容易被其他人看到,一旦该会话标识还在其生命有效期,则恶意用户可以冒充受害用户访问Web应用系统。

规则3.5.3.4:禁止将对用户保密的信息传送到客户端。

说明:这些信息一旦传送到客户端,那么用户也就可以获取到了。

3.6 安全审计

本节的安全审计是针对Web业务应用,不包括对操作系统、Web容器的安全审计。对于操作系统和Web容器的安全审计,可以参考对应的操作系统安全基线和Web安全配置规范。

规则3.6.1:应用服务器必须对安全事件及操作事件进行日志记录。

说明:安全事件包括登录、注销、添加、删除、修改用户、授权、取消权限、鉴权、修改用户口令等;操作事件包括对业务系统配置参数的修改,对重要业务数据的创建、删除、修改、查询等;对于上述事件的结果,不管是成功还是失败,都需要记录日志。

规则3.6.2:安全日志必须包括但不限于如下内容:事件发生的时间、事件类型、客户端IP、客户端机器名、当前用户的标识、受影响的个体(数据、资源)、成功或失败标识、启动该事件的进程标识以及对该事件的详细描述。

规则3.6.3:严格限制对安全日志的访问。

说明:只有Web应用程序的管理员才能查询数据库表形式或文件形式的安全日志;除数据库超级管理员外,只有应用程序连接数据库的帐号可以查询(select)及插入(insert)安全日志表;除操作系统超级管理员外,只有应用程序的运行帐户才能读、写文件形式的安全日志(但不允许删除)。确保日志的安全,限制对日志的访问,这加大了攻击者篡改日志文件以掩饰其攻击行为的难度。

规则3.6.4:对日志模块占用资源必须有相应的限制机制。

说明:限制日志模块占用的资源,以防止如自动的恶意登陆尝试导致的资源枯竭类DOS攻击;比如限制日志记录占用的磁盘空间。

规则3.6.5:禁止日志文件和操作系统存储在同一个分区中,同时,应使用转储、滚动、轮循机制,来防止存储日志的分区写满。

说明:所需空间和具体业务、局点容量、日志保存周期相关,要根据实际情况估算。

建议3.6.1:安全日志应该有备份及清理机制。

说明:备份及清理机制包括定期备份及清理安全日志和监控用于存放安全日志的磁盘空间的使用情况。可以配置定期备份及清理的时间,可以配置以用于存放安全日志的磁盘空间使用率达到多少时进行备份及清理。

建议3.6.2:通过网络形式保存安全日志。

说明:在生成安全日志时,即时将日志保存到网络上其他主机,而且生成安全日志的应用程序不能再访问存放在其他主机的日志。

3.7 Web Service

规则3.7.1:对Web Service接口的调用必须进行认证。

说明:认证就是确定谁在调用Web Service,并且证实调用者身份。

实施指导:

可以通过在消息头中增加用户名和口令,作为认证凭据;

对于安全性要求不高、只向同一信任域内其他主机开放的Web Service接口,可以通过简单的IP认证来实现接口的认证(只有服务器端指定IP地址的客户端才允许调用,IP地址可配置)。

规则3.7.2:如果调用者的权限各不相同,那么必须对Web Service接口的调用进行鉴权。

说明:鉴权就是判断调用者是否有权限调用该Web Service接口。

实施指导:

可以通过Axis的handler对调用进行鉴权。

规则3.7.3:通过Web Service接口传递敏感数据时,必须保障其机密性。

实施指导:

方案1:请参考《附件2 Web Service 安全接入开发指导》。

方案2:采用https安全协议。

规则3.7.4:通过Web Service接口传递重要的交易数据时,必须保障其完整性和不可抵赖性。

说明:重要的交易数据,如转账时涉及的“转入账号”、“转出账号”、“金额”等。实施指导:

请参考《附件2 Web Service 安全接入开发指导》。

规则3.7.5:如果Web Service只对特定的IP开放,那么必须对调用Web Service 接口的客户端IP进行鉴权,只有在IP地址白名单中的客户端才允许调用,IP地址白名单可配置。

实施指导:请参考《附件3客户端IP鉴权实施指导》。

规则3.7.6:对Web Service接口调用进行日志记录。

说明:日志内容包括但不限于如下内容:调用时间、操作类型、调用接口名称、详细的接口参数、客户端IP、客户端机器名、调用者的用户标识、受影响的个体(数据、资源)、成功或失败标识。

规则3.7.7:必须对Web Service提交的参数进行输入校验。

说明:具体输入校验部分请查看4.1输入校验。

3.8 RESTful Web Service

RESTful Web Service(也称为RESTful Web API)是一个使用HTTP并遵循REST 原则的Web服务。

规则3.8.1:对RESTful Web Service的调用必须进行认证。

说明:认证就是确定谁在调用RESTful Web Service,并且证实调用者身份。

实施指导:

客户端发起的Restful请求需要在消息头带Authorization字段,内容填Basic Base64(user:pass),服务端对user和passwd进行认证。

注意:user和pass必须加密保存在配置文件或数据库中,不能写死在代码中;传输时采用https安全协议。

对于安全性要求不高、只向同一信任域内其他主机开放的Web Service接口,可以通过简单的IP认证来实现接口的认证(只有服务器端指定IP地址的客户端才允许调用,IP地址可配置)。

规则3.8.2:如果调用者的权限各不相同,那么必须对RESTful Web Service的调用进行鉴权。

说明:鉴权就是判断调用者是否有权限调用该RESTful Web Service。

规则3.8.3:通过RESTful Web Service传递敏感数据时,必须保障其机密性。

实施指导:

采用https安全协议。

规则3.8.4:如果RESTful Web Service只对特定的IP开放,那么必须对调用RESTful Web Service的客户端IP进行鉴权,只有在IP地址白名单中的客户端才允许调用,IP地址白名单可配置。

实施指导:

请参考《附件3客户端IP鉴权实施指导》。

规则3.8.5:对RESTful Web Service调用进行日志记录。

说明:日志内容包括但不限于如下内容:调用时间、操作类型、调用接口名称、详细的接口参数、客户端IP、客户端机器名、调用者的用户标识、受影响的个体(数据、资源)、成功或失败标识。

规则3.8.6:必须对RESTful Web Service提交的参数进行输入校验。

说明:具体输入校验部分请查看4.1输入校验。

3.9 DWR

DWR(Direct Web Remoting)是一种Java 和JavaScript 相结合的开源框架,可以帮助开发人员更容易地完成应用Ajax 技术的Web 应用程序,让浏览器上的JavaScript 方法调用运行在Web 服务器上的Java 方法。

规则3.9.1:关闭DWR 调试功能。

说明:如果开启了DWR调试功能,那么攻击者可以轻易查看和调用系统提供的所有DWR接口,所以,版本发布时,一定要关闭DWR调试功能。

实施指导:

修改对应的web.xml文件中的debug参数值为false:

dwr-invoker

org.directwebremoting.servlet.DwrServlet

debug

false

......

规则3.9.2:对DWR接口的调用必须进行认证。

说明:认证就是确定谁在调用DWR接口,并且证实调用者身份。

实施指导:

对于DWR接口的认证直接沿用3.2.2认证机制,不用单独再做认证。

规则3.9.3:对DWR接口的调用必须进行鉴权。

说明:鉴权就是判断调用者是否有权限调用该DWR接口。

实施指导:

DWR的请求和普通的Web请求一样,都可以通过过滤器来鉴权,对于DWR接口的鉴权直接沿用规则3.4.1的鉴权机制,具体实现参照规则3.4.1的实施指导。规则3.9.4:必须对DWR提交的参数进行输入校验。

说明:具体输入校验部分请查看4.1输入校验。

4 Web编程安全规范

4.1 输入校验

规则4.1.1:必须对所有用户产生的输入进行校验,一旦数据不合法,应该告知用户输入非法并且建议用户纠正输入。

说明:用户产生的输入是指来自text、password、textareas或file表单域的数据;必须假定所有用户产生的输入都是不可信的,并对它们进行合法性校验。

规则4.1.2:必须对所有服务器产生的输入进行校验,一旦数据不合法,必须使会话失效,并记录告警日志。

说明:服务器产生的输入是指除用户产生的输入以外的输入,例如来自hidden fields、selection boxes、check boxes、radio buttons、cookies、HTTP headers、热点链接包含的URL参数的数据或客户端脚本等;必须假定所有服务器产生的输入都是被篡改过的、恶意的,并对它们进行合法性校验,如果不合法,说明有人恶意篡改数据。举例:假如用户资料填写表单中的“性别”为必填项,用radio button(‘男’和‘女’对应实际值分别为‘1’和‘0’)来限制用户的输入,如果应用程序收到的“性别”值为‘2’,那么可以断定有人恶意篡改数据。

规则4.1.3:禁止将HTTP标题头中的任何未加密信息作为安全决策依据。

说明:HTTP 标题头是在HTTP 请求和HTTP 响应的开始阶段发送的。Web 应用程序必须确保不以HTTP 标题头中的任何未加密信息作为安全决策依据,因为攻击者要操作这一标题头是很容易的。例如,标题头中的referer 字段包含来自请求源端的Web 页面的URL。不要根据referer 字段的值做出任何安全决策(如检查请求是否来源于Web 应用程序生成的页面),因为该字段是很容易被伪造的。

规则4.1.4:不能依赖于客户端校验,必须使用服务端代码对输入数据进行最终校验。

说明:客户端的校验只能作为辅助手段,减少客户端和服务端的信息交互次数。规则4.1.5:对于在客户端已经做了输入校验,在服务器端再次以相同的规则进行校验时,一旦数据不合法,必须使会话失效,并记录告警日志。

说明:肯定存在攻击行为,攻击者绕过了客户端的输入校验,因此必须使会话失效,并记入告警日志。

规则4.1.6:如果输入为数字参数则必须进行数字型判断。

说明:这里的数字参数指的是完全由数字组成的数据。

实施指导:

String mobileno = request.getParameter("mobileno");

String characterPattern = "^\\d+$"; //正则表达式表示是否全为数字

if (!mobileno.matches (characterPattern))

{

out.println (“Invalid Input”);

}

规则4.1.7:如果输入只允许包含某些特定的字符或字符的组合,则使用白名单进行输入校验。

说明:对于一些有规则可循的输入,如email地址、日期、小数等,使用正则表达式进行白名单校验,这样比使用黑名单进行校验更有效。

实施指导:

email地址校验的方法:

String emailAddress = request.getParameter("emailAddress");

String characterPattern = "^([a-z0-9A-Z]+[_-]?)+[a-z0-9A-Z]@(([a-z0-9A-Z]+[_-]?)+(-[a-z0-9A-Z]+)?\\.)+[a -zA-Z]{2,4}$"; //email正则表达式

if (!emailAddress.matches(characterPattern))

{

out.println (“Invalid Email Address”);

}

规则4.1.8:如果输入为字符串参数则必须进行字符型合法性判断。

说明:可定义一个合法字符集。

实施指导:

String text = request.getParameter("text");

String characterPattern = "^[A-Za-z]*$"; //开发者自行定义字符规则(方括号内的字符集)

if (!text.matches (characterPattern))

{

out.println (“Invalid Input”);

}

规则4.1.9:校验输入数据的长度。

说明:如果输入数据是字符串,必须校验字符串的长度是否符合要求,长度校验会加大攻击者实施攻击的难度。

规则4.1.10:校验输入数据的范围。

说明:如果输入数据是数值,必须校验数值的范围是否正确,如年龄应该为0~150之间的正整数。

规则4.1.11:禁止通过字符串串联直接使用用户输入构造可执行SQL 语句。

说明:禁止通过字符串串联直接使用用户输入构造可执行SQL 语句,如:string sql = "select status from Users where UserName='" + txtUserName.Text + "'";这样很容易被SQL注入攻击。

规则4.1.12:对于java/JSP语言,使用预编译语句PreparedStatement代替直接的语句执行Statement。

说明:使用预编译语句PreparedStatement,类型化SQL 参数将检查输入的类型,确保输入值在数据库中当作字符串、数字、日期或boolean等值而不是可执行代码进行处理,从而防止SQL注入攻击。而且,由于PreparedStatement 对象已预编译过,所以其执行速度要快于Statement 对象。因此,多次执行的SQL 语句经常创建为PreparedStatement 对象,还可以提高效率。

实施指导:

参考如下代码:

String inssql = "insert into buy(empid, name, age, birthday) values (?,?,?,?)"; PreparedStatement stmt = null;

stmt = conn.prepareStatement(inssql);

stmt.setString(1, empid);

stmt.setString(2, name);

stmt.setInt(3, age);

stmt.setDate(4, birthday);

stmt.execute();

备注:使用like进行模糊查询时,如果直接用"select * from table where comment like %?%",程序会报错,必须采用如下方法

String express = "select * from table where comment like ?";

pstmt = con.prepareStatement(express);

String c="hello";

pstmt.setString(1, "%"+c+"%");

//参数自动添加单引号,最后的SQL语句为:select * from table where comment like '%hello%'

pstmt.execute();

规则4.1.13:禁止动态构建XPath语句。

说明:和动态构建SQL一样,动态构建XPath语句也会导致注入漏洞(XPath注入)。动态构建XPath语句的例子:public boolean doLogin(String loginID, String password){......

XPathExpression expr = https://www.360docs.net/doc/cc7396583.html,pile("//users/user[loginID/text()='"+loginID+"' and password/text()='"+password+"' ]/firstname/text()");

......}

规则4.1.14:在JavaBean中禁止使用property="*"进行参数赋值。

说明:property="*"这表明用户在可见的JSP页面中输入的,或是直接通过Query String提交的参数值,将存储到与参数名相匹配的bean属性中。例如,网上购物程序,一般,用户是这样提交请求的:https://www.360docs.net/doc/cc7396583.html, /addToBasket.jsp?newItem=ITEM0105342,如果用户提交:https://www.360docs.net/doc/cc7396583.html,

/addToBasket.jsp?newItem=ITEM0105342&balance=0,这样,balance=0的信息就被在存储到了JavaBean中了,而balance是整个会话中用来存储总费用的,当他们这时点击“chekout”结账的时候,费用就全免了。

规则4.1.15:用于重定向的输入参数不能包含回车和换行字符,以防止HTTP响应拆分攻击。

说明:注意,“回车”字符有多种表示方式(CR = %0d = \r ),“换行”字符有多种表示方式(LF = %0a = \n)。

规则4.1.16:如果服务端代码执行操作系统命令,禁止从客户端获取命令。

说明:如果服务端代码中使用Runtime.getRuntime().exec(cmd)或ProcessBuilder 等执行操作系统命令,那么禁止从客户端获取命令;而且最好不要从客户端获取命令的参数,如果必须从客户获取命令的参数,那么必须采用正则表达式对命令参数进行严格的校验,以防止命令注入(因为,一旦从客户端获取命令或参数,通过;&|<>符号,非常容易构造命令注入,危害系统)。

4.2 输出编码

规则4.2.1:对于不可信的数据,输出到客户端前必须先进行HTML编码。

说明:不可信的数据(也就是其他业务系统生成的未经本应用程序验证的表数据或文件数据),通过对输出到客户端的数据进行编码,可以防止浏览器将HTML 视为可执行脚本,从而防止跨站脚本攻击。

实施指导:

JSP语言可以通过替换输出数据的特殊字符【&<>”’( )%+-】为其他表示形式后再输出给客户端,例如:

<%

String OutStr = "";

OutStr = OutStr.replaceAll("&","&");

OutStr = OutStr.replaceAll("<","<");

OutStr = OutStr.replaceAll(">",">");

OutStr = OutStr.replaceAll("\"",""");

OutStr = OutStr.replaceAll("\'","'");

OutStr = OutStr.replaceAll("\\(","(");

OutStr = OutStr.replaceAll("\\)",")");

out.println(OutStr);

%>

https://www.360docs.net/doc/cc7396583.html,语言可以通过HtmlEncode方法对HTML 的输出进行编码。

PHP语言可以通过htmlentities或htmlspecialchars方法对HTML输出进行编码。

4.3 上传下载

规则4.3.1:必须在服务器端采用白名单方式对上传或下载的文件类型、大小进行严格的限制。

规则4.3.2:禁止以用户提交的数据作为读/写/上传/下载文件的路径或文件名,以防止目录跨越和不安全直接对象引用攻击。

说明:建议对写/上传文件的路径或文件名采用随机方式生成,或将写/上传文件放置在有适当访问许可的专门目录。对读/下载文件采用映射表(例如,用户提交的读文件参数为1,则读取file1,参数为2,则读取file2)。防止恶意用户构造路径和文件名,实施目录跨越和不安全直接对象引用攻击。

规则4.3.3:禁止将敏感文件(如日志文件、配置文件、数据库文件等)存放在Web内容目录下。

说明:Web内容目录指的是:通过Web可以直接浏览、访问的目录,存放在Web内容目录下的文件容易被攻击者直接下载。

4.4 异常处理

规则4.4.1:应用程序出现异常时,禁止向客户端暴露不必要的信息,只能向客户端返回一般性的错误提示消息。

说明:应用程序出现异常时,禁止将数据库版本、数据库结构、操作系统版本、堆栈跟踪、文件名和路径信息、SQL 查询字符串等对攻击者有用的信息返回给客户端。建议重定向到一个统一、默认的错误提示页面,进行信息过滤。

规则4.4.2:应用程序捕获异常,并在日志中记录详细的错误信息。

说明:记录详细的错误消息,可供入侵检测及问题定位。

4.5 代码注释

规则4.5.1:在注释信息中禁止包含物理路径信息。

规则4.5.2:在注释信息中禁止包含数据库连接信息。

规则4.5.3:在注释信息中禁止包含SQL语句信息。

规则4.5.4:对于静态页面,在注释信息中禁止包含源代码信息。

规则4.5.5:对于动态页面不使用普通注释,只使用隐藏注释。

说明:动态页面包括ASP、PHP、JSP、CGI等由动态语言生成的页面。通过浏览器查看源码的功能,能够查看动态页面中的普通注释信息,但看不到隐藏注释(隐藏注释不会发送给客户端)。因此,为了减少信息泄漏,建议只使用隐藏注释。实施指导:

<%--隐藏注释1--%>

<%

//隐藏注释2

https://www.360docs.net/doc/cc7396583.html,ng.String str=(String)request.getParameter("a");

/*隐藏注释3*/

str = str.replaceAll("<","<");

out.println(str);

%>

4.6 归档要求

规则4.6.1:版本归档时,必须删除开发过程(包括现场定制)中的临时文件、备份文件、无用目录等。

说明:恶意用户可以通过URL请求诸如.bak之类的文件,Web服务器会将这些文件以文本方式呈现给恶意用户,造成代码的泄漏,严重威胁Web应用的安全。实施指导:

在web应用的根目录下执行以下命令:

find ./ -name "*.old" -o -name "*.OLD" -o -name "*.bak" -o -name "*.BAK" -o -name "*.temp" -o -name "*.tmp" -o -name "*.save" -o -name "*.backup" -o -name "*.orig" -o -name "*.000" -o -name "*~" -o -name "*~1" -o -name "*.dwt" -o -name "*.tpl" -o -name "*.zip" -o -name "*.7z" -o -name "*.rar" -o -name "*.gz" -o -name "*.tgz" -o -name "*.tar" -o -name "*.bz2"

分析查找到的文件是否临时文件、备份文件、无用文件,如果是则删除。

规则4.6.2:归档的页面程序文件的扩展名必须使用小写字母。

说明:很多Web server对大小写是敏感的,但对后缀的大小写映像并没有做正确的处理。攻击者只要在URL中将JSP文件后缀从小写变成大写,Web服务器就不能正确处理这个文件后缀,而将其当作纯文本显示。攻击者可以通过查看源码获得这些程序的源代码。因此,归档的页面程序文件的扩展名必须使用小写字母,如jsp、html、htm、asp等页面程序文件的扩展名分别为jsp、html、htm、asp。

规则4.6.3:归档的程序文件中禁止保留调试用的代码。

说明:这里的“调试用的代码”是指开发过程中进行临时调试所用的、在Web 应用运行过程中不需要使用到的Web页面代码或servlet代码。例如:在代码开发过程中为了测试一个添加帐号的功能,开发人员临时编写了一个JSP页面进行测试,那么在归档时,该JSP页面必须删除,以免被攻击者利用。

4.7 其他

华为软件编程规范

华为软件编程规范Revised on November 25, 2020

目录 1 排版 6 2 注释11 3 标识符命名18 4 可读性20 5 变量、结构22 6 函数、过程28 7 可测性36 8 程序效率40 9 质量保证44 10 代码编辑、编译、审查50 11 代码测试、维护52 12 宏53

1 排版 11-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 11-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 应如下书写 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 11-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: + STAT_SIZE_PER_FRAM * sizeof( _UL ); act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied = stat_poi[index].occupied; act_task_table[taskno].duration_true_or_false = SYS_get_sccp_statistic_state( stat_item ); report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER) && (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0));

_经典--华为的钣金件设计规范_

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. DKBA 华为技术有限公司企业技术规范 DKBA4031-2003.06 钣金结构件可加工性设计规范 2003-06-30发布2003-07-XX实施 华为技术有限公司发布

目次 前言.............................................. 错误!未定义书签。1范围和简介......................................... 错误!未定义书签。 1.1范围 ................................. 错误!未定义书签。 1.2简介 ................................. 错误!未定义书签。 1.3关键词 ............................... 错误!未定义书签。2规范性引用文件..................................... 错误!未定义书签。3冲裁............................................... 错误!未定义书签。 3.1冲裁件的形状和尺寸尽可能简单对称,使排样时废料最少。错误!未定义书签。 3.2冲裁件的外形及内孔应避免尖角。 ....... 错误!未定义书签。 3.3冲裁件应避免窄长的悬臂与狭槽 ......... 错误!未定义书签。 3.4冲孔优先选用圆形孔,冲孔有最小尺寸要求错误!未定义书签。 3.5冲裁的孔间距与孔边距 ................. 错误!未定义书签。 3.6折弯件及拉深件冲孔时,其孔壁与直壁之间应保持一定的距离 错误!未定义书签。 3.7螺钉、螺栓的过孔和沉头座 ............. 错误!未定义书签。 3.8冲裁件毛刺的极限值及设计标注 ......... 错误!未定义书签。 3.8.1冲裁件毛刺的极限值............... 错误!未定义书签。 3.8.2设计图纸中毛刺的标注要求......... 错误!未定义书签。4折弯............................................... 错误!未定义书签。 4.1折弯件的最小弯曲半径 ................. 错误!未定义书签。

防护电路设计规范 华为

DKBA 华为技术有限公司企业技术规范 DKBA1268-2003.08 代替DKBA3613-2001.11防护电路设计规范 2003-11-10发布2003-11-10实施 华为技术有限公司发布

目次 前言 (6) 1范围和简介 (7) 1.1范围 (7) 1.2简介 (7) 1.3关键词 (7) 2规范性引用文件 (7) 3术语和定义 (8) 4防雷电路中的元器件 (8) 4.1气体放电管 (8) 4.2压敏电阻 (9) 4.3电压钳位型瞬态抑制二极管(TVS) (10) 4.4电压开关型瞬态抑制二极管(TSS) (11) 4.5正温度系数热敏电阻(PTC) (11) 4.6保险管、熔断器、空气开关 (12) 4.7电感、电阻、导线 (13) 4.8变压器、光耦、继电器 (14) 5端口防护概述 (15) 5.1电源防雷器的安装 (16) 5.1.1串联式防雷器 (16) 5.1.2并联式防雷器 (16) 5.2信号防雷器的接地 (18)

5.3天馈防雷器的接地 (19) 5.4防雷器正确安装的例子 (19) 6电源口防雷电路设计 (20) 6.1交流电源口防雷电路设计 (20) 6.1.1交流电源口防雷电路 (20) 6.1.2交流电源口防雷电路变型 (22) 6.2直流电源口防雷电路设计 (23) 6.2.1直流电源口防雷电路 (23) 6.2.2直流电源口防雷电路变型 (24) 7信号口防雷电路设计 (25) 7.1E1口防雷电路 (26) 7.1.1室外走线E1口防雷电路 (26) 7.1.2室内走线E1口防雷电路 (27) 7.2网口防雷电路 (31) 7.2.1室外走线网口防雷电路 (31) 7.2.2室内走线网口防雷电路 (32) 7.3E3/T3口防雷电路 (36) 7.4串行通信口防雷电路 (36) 7.4.1RS232口防雷电路 (36) 7.4.2RS422&RS485口防雷电路 (37) 7.4.3V.35接口防雷电路 (39) 7.5用户口防雷电路 (39)

华为软件编程规范.doc

文档编号产品版本受控状态 DC-SB-2003-1005V 1.0 内部 产品名称:软件编程规范共页 软件编程规范 (仅供内部使用) 北京世纪百合科技有限公司 Beijing Centurial Lily Technology Co.,Ltd. 版权所有不得复制

文档修改记录

目录 1.引言 (4) 1.1 目的 (4) 1.2 范围 (4) 2.规范 (4) 2.1 文件 (4) 2.2版面风格 (8) 2.3 标识符命名 (12) 2.4 函数与宏 (14) 2.5 代码的可靠性 (18) 3.附录:通用类型的公共定义 (23)

1.引言 1.1目的 本规范的目的在于增加源代码的可读性,减少程序员对代码理解上的偏差,使程序员能够编写出可靠的代码,降低代码维护成本。 1.2范围 本规范内容涉及范围包括:文件、版面、注释、标识符、变量和结构、函数、宏以及可理解性等。本规范适用于公司开发的所有软件产品。在新软件的编码过程中本规范必须执行。 2.规范 2.1文件 2.1.1头文件的名称一律为小写,格式为“子系统名_文件名.h”。例如: ipf_protocol.h等。 2.1.2头文件的格式如下: ?注释头,格式参见软件编程规范; ?头文件预编译开关开始,格式为: #ifndef 预编译开关 #define 预编译开关 其中预编译开关格式为:“ _文件名_H”,其中文件名一律大写 ?头文件内容; ?头文件预编译开关结束,格式为: #endif 用来和头文件预编译开关的开始对应。 例如:以下为ipf_ip.h头文件的内容: /************************************************************ Copyright (c) Lily Of The Century Technology Co., LTD. ALL RIGHTS RESERVED Description: // 用于详细说明此程序文件完成的主要功能 *************************************************************/ #ifndef _IPF_IP_H #define _IPF_IP_H ...

WEB安全编程技术规范(V1.0)

1.范围 本规范从应用开发安全管理要求出发,给出了WEB编码安全的具体要求。供浙江公司IT系统内部和厂商使用,适用于省市公司IT系统项目建设WEB工作。 本规范明确定义了JA V A、PHP应用开发中和WEB编码安全相关的技术细节。 与JA V A编码安全相关的内容包括:跨站脚本攻击及解决方法、SQL注入及解决方法、恶意文件执行及解决方法、不安全的直接对象引用及解决方法、跨站请求伪造及解决方法、信息泄露和错误处理不当及解决方法、残缺的认证和会话管理及解决方法、不安全的加密存储及解决方法、不安全的通信及解决方法、限制URL 访问实效解决方法。 与PHP编码安全相关的内容包括:变量滥用及解决方法、文件打开漏洞及解决方法、文件包含漏洞及解决方法、文件上传漏洞及解决方法、命令执行漏洞及解决方法、变量类型缺陷及解决方法、警告及错误信息处理解决方法、PHP与MYSQL 组合的SQL注入解决方法、跨站脚本解决方法。 2.1.规范概述 Web应用程序为结构设计人员、设计人员和开发人员提出一系列复杂的安全问题。最安全、最有能力抵御攻击的Web应用程序是那些应用安全思想构建的应用程序。 在设计初始阶段,应该使用可靠的体系结构和设计方法,同时要结合考虑程序部署以及企业的安全策略。如果不能做到这一点,将导致在现有基础结构上部署应用程序时,要不可避免地危及安全性。 本规范提供一系列安全的体系结构和设计指南,并按照常见的应用程序漏洞类别进行组织。这些指南是Web应用程序安全的重要方面,并且是经常发生错误的领域。

2.实现目标 使用本规范可以实现: 1.确定安全Web应用程序的重要体系结构和设计问题。 2.设计时考虑重要部署问题。 3.制定能增强Web应用程序输入验证的策略。 4.设计安全的身份验证和会话管理机制。 5.选择适当的授权模型。 6.实现有效的帐户管理方法,并保护用户会话。 7.对隐私、认可、防止篡改和身份验证信息进行加密。 8.防止参数操作。 9.设计审核和记录策略。 3.安全编码原则 1.程序只实现你指定的功能 2.永不要信任用户输入,对用户输入数据做有效性检查 3.必须考虑意外情况并进行处理 4.不要试图在发现错误之后继续执行 5.尽可能使用安全函数进行编程 6.小心、认真、细致地编程 4.安全背景知识 本规范主要提供设计应用程序时应该遵循的一些指南和原则。为充分理解本规范内容,请:了解应用程序将会受到的威胁,以确保通过程序设计解决这些问题。解需要考虑的威胁。在程序设计阶段应该考虑到这些威胁。 在应用程序易受攻击的重要环节应用系统的方法。将重点放在程序部署、输入验证、身份验证和授权、加密及数据敏感度、配臵、会话、异常管理以及适当的审核和记录策略上,以确保应用程序具有责任性。

华为公司招聘职位要求

华为公司招聘条件要求 软件研发工程师: 工作职责 : 负责通信系统软件模块的设计、编码、调试、测试等工作,参与相关质量活动,确保设计、实现、测试工作按时保质完成 职位要求: 1、计算机、通信或相关专业本科以上学历 2、熟悉C/C++、JAVA底层驱动软件编程,熟悉 TCP/IP 协议、 Internet 网的基本知识 3 、对通信知识有一定基础 4、能够熟练阅读和理解英文资料 2、硬件研发工程师 : 工作职责 : 从事单板硬件、光技术、逻辑、射频、装备、 机电、CAD器件可靠性等模块开发工作,参与相关质量活动, 确 保设计、实现、测试工作的按时保质完成。 职位要求: 1、电子、计算机、通信、自控、自动化相关专业本科以上学历 2、具备良好的数字、模拟电路基础 3、熟悉C/嵌入式系统开发/底层驱动软件编程/逻辑设计 4、能 够熟练阅读和理解英文资料芯片设计工程师: 工作职责 :

1、负责数字 / 模拟芯片开发和设计、验证、实现工作; 2、按照模块规格和芯片总体方案的要求,严格遵循开发流程、模板、标准和规范,承担 模块的详细设计和实施工作,确保开发工作按时按质完成; 3、及时编写各种设计文档和标准化资料,实现资源、经验共享。 职位要求: 1、微电子、计算机、通信工程等相关专业 2、了解或实际应用过 VHDL/Verilog 语言编程,掌握数字电路设计,或具有FPGA设计经验,或熟悉综合(SYN”时序分析(STA /布局布线(Place and routing ) /可测性设计(DFT,有相关工具应用的经验;或具有模拟 IC 设计项目经验 射频开发工程师: 工作职责 : 负责通讯设备射频模块的开发、设计和优化工作;从事无线基站通信设备天馈及其解决方案方面的研究和开发工作。 职位要求: 1、电子、通信、电磁场与微波、微电子半导体等专业本科及以上学历; 2、能够熟练阅读和理解英文资料; 3、掌握并有RF仿真经验(如ADS优先; 4、有射频产品开发经验优先。 云计算研发工程师:

Web安全系统测试要求规范

DKBA DKBA 2355-2009.7 .2cto.红黑联盟收集整理 Web应用安全测试规V1.2 2009年7月5日发布2009年7月5日实施 所有侵权必究 All rights reserved

修订声明Revision declaration 本规拟制与解释部门: 安全解决方案部电信网络与业务安全实验室、软件公司安全TMG、软件公司测试业务管理部 本规的相关系列规或文件: 《Web应用安全开发规》 相关国际规或文件一致性: 《OWASP Testing Guide v3》 《信息安全技术信息安全风险评估指南》 《Information technology Security techniques Management of information and communications technology security》-ISO 13335 替代或作废的其它规或文件: 无 相关规或文件的相互关系: 本规以《Web应用安全开发规》为基础、结合Web应用的特点而制定。

目录Table of Contents 1概述 (7) 1.1背景简介 (7) 1.2适用读者 (7) 1.3适用围 (7) 1.4安全测试在IPD流程中所处的位置 (8) 1.5安全测试与安全风险评估的关系说明 (8) 1.6注意事项 (9) 1.7测试用例级别说明 (9) 2测试过程示意图 (10) 3WEB安全测试规 (11) 3.1自动化W EB漏洞扫描工具测试 (11) 3.1.1AppScan application扫描测试 (12) 3.1.2AppScan Web Service 扫描测试 (13) 3.2服务器信息收集 (13) 3.2.1运行权限测试 (13) 3.2.2Web服务器端口扫描 (14) 3.2.3HTTP方法测试 (14) 3.2.4HTTP PUT方法测试 (15) 3.2.5HTTP DELETE方法测试 (16) 3.2.6HTTP TRACE方法测试 (17) 3.2.7HTTP MOVE方法测试 (17) 3.2.8HTTP COPY方法测试 (18) 3.2.9Web服务器版本信息收集 (18) 3.3文件、目录测试 (20) 3.3.1工具方式的敏感接口遍历 (20) 3.3.2Robots方式的敏感接口查找 (21)

华为软件编程地要求规范

软件编程规范 (仅供内部使用) 北京世纪百合科技有限公司 Beijing Centurial Lily Technology Co.,Ltd. 版权所有不得复制

文档修改记录

目录 1.引言 (6) 1.1 目的 (6) 1.2 范围 (6) 2.规范 (6) 2.1 文件 (6) 2.2版面风格 (4) 2.3 标识符命名 (9) 2.4 函数与宏 (11) 2.5 代码的可靠性 (15) 3.附录:通用类型的公共定义 (21)

1.引言 1.1目的 本规范的目的在于增加源代码的可读性,减少程序员对代码理解上的偏差,使程序员能够编写出可靠的代码,降低代码维护成本。 1.2范围 本规范内容涉及范围包括:文件、版面、注释、标识符、变量和结构、函数、宏以及可理解性等。本规范适用于公司开发的所有软件产品。在新软件的编码过程中本规范必须执行。 2.规范 2.1文件 2.1.1头文件的名称一律为小写,格式为“子系统名_文件名.h”。例如: ipf_protocol.h等。 2.1.2头文件的格式如下: 注释头,格式参见软件编程规范; 头文件预编译开关开始,格式为: #ifndef 预编译开关 #define 预编译开关 其中预编译开关格式为:“ _文件名_H”,其中文件名一律大写 头文件内容; 头文件预编译开关结束,格式为: #endif 用来和头文件预编译开关的开始对应。 例如:以下为ipf_ip.h头文件的内容: /************************************************************ Copyright (c) Lily Of The Century Technology Co., LTD. ALL RIGHTS RESERVED Description: // 用于详细说明此程序文件完成的主要功能 *************************************************************/ #ifndef _IPF_IP_H #define _IPF_IP_H ...

保护电路图全集

保护电路图全集 一.低功耗定时开关电路图 二.LM339组成的过压、欠压及过热保护电路 进线电源过压及欠压对开关电源造成的危害,主要表现在器件因承受的电压及电流应力超出正常使用的范围而损坏,同时因电气性能指标被破坏而不能满足要求。因此对输入电源的上限和下限要有所限制,为此 采用过压、欠压保护以提高电源的可靠性和安全性。 温度是影响电源设备可靠性的最重要因素。根据有关资料分析表明,电子元器件温度每升高2℃,可靠性下降10%,温升50℃时的工作寿命只有温升25℃时的1/6,为了避免功率器件过热造成损坏,在开关电 源中亦需要设置过热保护电路。 图4是仅用一个4比较器LM339及几个分立元器件构成的过压、欠压、过热保护电路。取样电压可以直接从辅助控制电源整流滤波后取得,它反映输入电源电压的变化,比较器共用一个基准电压,N1.1为欠压比较器,N1.2为过压比较器,调整R1可以调节过、欠压的动作阈值。N1.3为过热比较器,RT为负温度系数的热敏电阻,它与R7构成分压器,紧贴于功率开关器件IGBT的表面,温度升高时,RT阻值下降,适当选取R7的阻值,使N1.3在设定的温度阈值动作。N1.4用于外部故障应急关机,当其正向端 输入低电平时,比较器输出低电平封锁PWM驱动信号。由于4个比较器的输出端是并联的,无论是过压、欠压、过热任何一种故障发生,比较器输出低电平,封锁驱动信号使电源停止工作,实现保护。如将电路 稍加变动,亦可使比较器输出高电平封锁驱动信号。

图4 过压、欠压、过热保护电路 · [图文] 低功耗定时开关电路图 · [图文] LM339组成的过压、欠压及过热保护电路 · [图文] 采用继电器和限流电阻构成的软启动电路 · [图文] 采用晶闸管和限流电阻组成的软启动电路 · [组图] 防浪涌软启动电路 · [图文] CW431CS过电压保护应用电路 · [图文] 弧焊电源保护电路的设计 · [图文] 电动车控制器短路保护时间的计算方法 · 太阳能热水器与防雷电设计方案 · ESD保护元件的对比分析及大电流性能鉴定 · [图文] PolySwitch元件的保护特性解析 · 如何正确选择中小型断路器 · 变频器过电压产生的原因及解决方法 · [图文] ESD保护时怎样维持USB信号完整性 · [图文] 集成运算放大器输出过流保护电路原理 · [图文] 集成运算放大器供电过压保护电路原理 · [图文] 保险丝熔断自愈电路图原理 · [图文] 停电自锁保护开关电路原理图 · [图文] 压敏电阻原理及应用 · [图文] 选用压敏电阻的方法 · [图文] 整流电源的过压保护-压敏电阻及其应用 · [图文] 用于三极管的过压保护-压敏电阻及其应用 · [图文] 彩电消磁电路的过压保护-压敏电阻及其应用 · [组图] 显像管放电保护-压敏电阻及其应用 · [图文] 直流电机的稳速保护-压敏电阻及其应用 · [图文] 固态继电器电路的过压保护-压敏电阻及其应用 · [图文] 电视机的防雷保护-压敏电阻及其应用 · [图文] 电视机稳压保护器-压敏电阻及其应用 · [图文] 由TL431组成的高精度的恒流源电路图 · [图文] 带滞回区的电池放电保护电路 · [图文] 红外线探测报警器制作原理 · [图文] 过流保护电路原理 · [图文] 直流电路的过流保护设计方法 · [图文] 蒸汽熨斗自动保护电路原理图 · [图文] 含指示灯的短路保护电路 · [图文] 三相三线制电源缺相保护电路 · [图文] 锂芯保护电路 · [图文] T3(E3)保护电路及解决方案 · [图文] VDSL保护电路及解决方案

基于WEB的应用系统安全方案

第二章系统安全的需求分析 本章从数据安全和业务逻辑安全两个角度对应用系统的安全进行需求分析,主要包括保密性需求、完整性需求、可用性需求三部分;随后对业务逻辑安全需求进行了分析,包括身份认证、访问控制、交易重复提交控制、异步交易处理、交易数据不可否认性、监控与审计等几个方面;最后还分析了系统中一些其它的安全需求。 2.1 数据安全需求 2.1.1 数据保密性需求 数据保密性要求数据只能由授权实体存取和识别,防止非授权泄露。从目前国内应用的安全案例统计数据来看,数据保密性是最易受到攻击的一个方面,通常表现为客户端发生的数据泄密,包括用户的基本信息、账户信息、登录信息等的泄露。在应用系统中,数据保密性需求通常主要体现在以下几个方面:A.客户端与系统交互时输入的各类密码:包括系统登录密码、转账密码、凭证查询密码、凭证交易密码等必须加密传输及存放,这些密码在应用系统中只能以密文的方式存在,其明文形式能且只能由其合法主体能够识别。 以网银系统为例,在网银系统中,通常存有四种密码:系统登录密码、网银转账密码、柜面交易密码及一次性密码。系统登录密码用来认证当前登录者为指定登录名的合法用户,网银用户的登录密码和网银转账密码由用户在柜面开户时指定,用户在首次登录网银系统时,系统必须强制用户修改初始密码,通常要求长度不得少于六位数,且不能是类似于111111、1234567、9876543等的简单数字序列,系统将进行检查。 网银转账密码是指网银系统为巩固用户资金安全,在涉及资金变动的交易中对用户身份进行了再认证,要求用户输入预设的密码,网银交易密码仅针对个人用户使用,企业用户没有网银交易密码。建立多重密码机制,将登录密码与网银转账密码分开管理,有利于加强密码的安全性。由于用户在使用网银时每次都必须先提供登录密码,故登录密码暴露的机会较多,安全性相对较弱;但登录网银的用户并不是每次都会操作账户资金的,所以专门设定网银转账密码可加强账户

华为软件开发规范

软件开发规范 1 排版 11-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 11-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 应如下书写 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 11-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL ); act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied = stat_poi[index].occupied; act_task_table[taskno].duration_true_or_false

= SYS_get_sccp_statistic_state( stat_item ); report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER) && (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0));

三大常见电路保护器件

三大常见电路保护器件 电路保护主要有两种形式:过压保护和过流保护。选择适当的电路保护器件是实现高效、可靠电路保护设计的关键,涉及到电路保护器件的选型,我们就必须要知道各电路保护器件的作用。在选择电路保护器件的时候我们要知道保护电路不应干扰受保护电路的正常行为,此外,其还必须防止任何电压瞬态造成整个系统的重复性或非重复性的不稳定行为。 电路保护最常见的器件有三:GDT、MOV和TVS。 GDT(陶瓷气体放电管) GDT有单极和三极两种形式。三极GDT是一个看似简单的器件,能在大难临头的关键时刻保持一个差分线对的平衡:少许的不对称可以使瞬变脉冲优先耦合到平衡馈线的某一侧,因而产生一个巨大的差分信号。即使瞬变事件对称地发生在平衡馈线上,两个保护器件响应特性的微小差别也会使一个破坏性的脉冲振幅出现在系统的输入端上。三极GDT在一个具有共用气体容积的管内提供一个差分器件和两个并联器件。造成一对电极导通的任何条件都会使所有三个电极之间导通,因为气体的状态(绝缘状态、电离状态或等离子状态)决定了放电管的行为。 在正常的工作条件下,一只GDT的并联阻抗约为1TΩ,并联电容为1pF以下。当施加在GDT两端的电势低于气体电离电压(即“辉光”电压)时,GDT的小漏电流(典型值小于1 pA)和小电容几乎不发生变化。一旦GDT达到辉光电压,其并联阻抗将急剧下降,从而电流流过气体。不断增加的电流使大量气体形成等离子体,等离子体又使该器件上的电压进一步降低至15V左右。当瞬变源不再继续提供等离子电流时,等离子体就自动消失。GDT 的净效果是一种消弧作用,它能在1ms内将瞬变事件期间的电压限制在大约15V以下。GDT的一个主要优点是迫使大部分能量消耗在瞬变的源阻抗中,而不是消耗在保护器件或

网站WEB应用安全措施要求规范

网站WEB应用安全措施要求规范 1.安全防范措施要求 (1)数据保密性:数据加密主要是防止非授权用户截获并使用该数据,网站中有保密要求的信息只能供经过授权允许的人员,并且以经过允许的方式使用。 (2)数据完整性:使用一种方案来确认同站上的数据在传输过程中没有被篡改,而造成信息完整性破坏的原因可以分为人为的和非人为的两种: 非人为的因素:如通信传输中的干扰噪声,系统硬件或软件的故障等; 人为因素:包括有意的和无意的两种,前者如黑客对计算机的入侵、合法用户越权对网站内数据的处理,后者如操作失误或使用不当。 (3)数据安全性:数据的安全性就是保证数据库不被故意破坏和非法存取:数据的完整性是防止数据库中存在不符合语义的数据,以及防止由于错误信息的输入、输出而造成无效操作和错误结果:并发控制即数据库是一个共享资源,在多个用户程序并行地存取数据库时,就可能会产生多个用户程序通过网站并发地存取同一数据的情况,若不进行并发控制就会使取出和存入的数据不正确,破坏数据库的一致性。 (4)恶意代码防范:通过代码层屏蔽常见恶意攻击行为,防止非法数据提交;如:SQL注入; (5)双因子授权认证:应对同一用户采用两种或两种以上组合的鉴别技术实现用户身份鉴别。 (6)密码复杂度:强制用户首次登录时修改初始口令;口令长度至少为8位,并由数字、大小字母与特殊字符组成。 (7)会话过期与超时:浏览器Cookie过期、无动作过期、强制过期、保持会话等进行限制; (8)安全审计功能:a)审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计,如:登录、退出、添加、删除、修改或覆盖等;b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;

PCB设计规范-华为

华为PCB设计规范 1..1 PCB(Print circuit Board):印刷电路板。 1..2 原理图:电路原理图,用原理图设计工具绘制的、表达硬件电路中各种器件之间的连接关系的图。 1..3 网络表:由原理图设计工具自动生成的、表达元器件电气连接关系的文本文件,一般包含元器件封装、网络列表和属性定义等组成部分。 1..4 布局:PCB设计过程中,按照设计要求,把元器件放臵到板上的过程。深圳市华为技术有限公司1999-07-30批准,1999-08-30实施。 1..5 仿真:在器件的IBIS MODEL或SPICE MODEL支持下,利用EDA设计工具对PCB的布局、布线效果进行仿真分析,从而在单板的物理实现之前发现设计中存在的EMC问题、时序问题和信号完整性问题,并找出适当的解决方案。深圳市华为技术有限公司1999-07-30批准,1999-08-30实施。 II. 目的 A. 本规范归定了我司PCB设计的流程和设计原则,主要目的是为PCB设计者提供必须遵循的规则和约定。 B. 提高PCB设计质量和设计效率。 提高PCB的可生产性、可测试、可维护性。 III. 设计任务受理 A. PCB设计申请流程 当硬件项目人员需要进行PCB设计时,须在《PCB设计投板申请表》中提出投板申请,并经其项目经理和计划处批准后,流程状态到达指定的PCB设计部门审批,此时硬件项目人员须准备好以下资料: ⒈经过评审的,完全正确的原理图,包括纸面文件和电子件; ⒉带有MRPII元件编码的正式的BOM; ⒊PCB结构图,应标明外形尺寸、安装孔大小及定位尺寸、接插件定位尺寸、禁止布线区等相关尺寸; ⒋对于新器件,即无MRPII编码的器件,需要提供封装资料; 以上资料经指定的PCB设计部门审批合格并指定PCB设计者后方可开始PCB设计。

华为布线规则

华为布线规则 2007-12-29 10:03 设计过程 A. 创建网络表 1. 网络表是原理图与PCB的接口文件,PCB设计人员应根据所用的原理图和PCB设计工具的特性,选用正确的网络表格式,创建符合要求的网络表。 2. 创建网络表的过程中,应根据原理图设计工具的特性,积极协助原理图设计者排除错误。保证网络表的正确性和完整性。 3. 确定器件的封装(PCB FOOTPRINT). 4. 创建PCB板根据单板结构图或对应的标准板框, 创建PCB设计文件; 注意正确选定单板坐标原点的位置,原点的设置原则: A. 单板左边和下边的延长线交汇点。 B. 单板左下角的第一个焊盘。 板框四周倒圆角,倒角半径5mm。特殊情况参考结构设计要求。 B. 布局 1. 根据结构图设置板框尺寸,按结构要素布置安装孔、接插件等需要定位的器件,并给这些器件赋予不可移动属性。按工艺设计规范的要求进行尺寸标注。 2. 根据结构图和生产加工时所须的夹持边设置印制板的禁止布线区、禁止布局区域。根据某些元件的特殊要求,设置禁止布线区。 3. 综合考虑PCB性能和加工的效率选择加工流程。 加工工艺的优选顺序为:元件面单面贴装——元件面贴、插混装(元件面插装焊接面贴装一次波峰成型)——双面贴装——元件面贴插混装、焊接面贴装。 4. 布局操作的基本原则 A. 遵照“先大后小,先难后易”的布置原则,即重要的单元电路、核心元器件应当优先布局. B. 布局中应参考原理框图,根据单板的主信号流向规律安排主要元器件. C. 布局应尽量满足以下要求:总的连线尽可能短,关键信号线最短;高电压、大电流信号与小电流,低电压的弱信号完全分开;模拟信号与数字信号分开;高频信号与低频信号分开;高频元器件的间隔要充分. D. 相同结构电路部分,尽可能采用“对称式”标准布局; E. 按照均匀分布、重心平衡、版面美观的标准优化布局; F. 器件布局栅格的设置,一般IC器件布局时,栅格应为50--100 mil,小型表面安装器件,如表面贴装元件布局时,栅格设置应不少于25mil。 G. 如有特殊布局要求,应双方沟通后确定。 5. 同类型插装元器件在X或Y方向上应朝一个方向放置。同一种类型的有极性分立元件也要力争在X或Y方向上保持一致,便于生产和检验。 6. 发热元件要一般应均匀分布,以利于单板和整机的散热,除温度检测元件以外的温度敏感器件应远离发热量大的元器件。 7. 元器件的排列要便于调试和维修,亦即小元件周围不能放置大元件、需调试的元、器件周围要有足够的空间。 8. 需用波峰焊工艺生产的单板,其紧固件安装孔和定位孔都应为非金属化孔。当安装孔需要接地时, 应采用分布接地小孔的方式与地平面连接。 9. 焊接面的贴装元件采用波峰焊接生产工艺时,阻、容件轴向要与波峰焊传送方

防护电路中的元器件

防护电路中的元器件  随着社会的不断进步,物联网的发展,电子产品的室外应用场景,持续高增长,电子产品得到了极其广泛的应用,无论是公共事业,还是商用或者民用,已经深入到各个领域,这也造成了产品功能的多样化、应用环境的复杂化。随着产品功能越来越多,其功能接口也越来越丰富,比如:网络接口(带POE功能)、模拟视频接口、音频接口、报警接口、RS485接口、RS232接口等等。功能在不断地增多,但是对于产品的体积要求越来越小,在增加设计难度的同时也会使产品面临着更多的威胁,比如雨季随着雷电的增多,产品批量的损坏;冬季设备安装调试时,由于静电造成设备的功能异常等等。本文着重介绍常用防护器件在产品中的基本应用,通过防护电路来提高产品抗静电、抗浪涌干扰的能力,从而提高产品的稳定性。 通信产品在应用的过程中,由于雷击等原因形成的过电压和过电流会对设备端口造成损害,因此应当设计相应的防护电路,各个端口根据其产品族类、网络地位、目标市场、应用环境、信号类型以及实现成本等多种因素的不同所对应的防护电路也不同。 1、气体放电管 图1 气体放电管的原理图符号 气体放电管是一种开关型保护器件,工作原理是气体放电。当两极间电压足够大时,极间间隙将放电击穿,由原来的绝缘状态转化为导电状态,类似短路。导电状态下两极间维持的电压很低,一般在20~50V,因此可以起到

保护后级电路的效果。气体放电管的主要指标有:响应时间、直流击穿电压、冲击击穿电压、通流容量、绝缘电阻、极间电容、续流遮断时间。 气体放电管的响应时间可以达到数百ns以至数ms,在保护器件中是最慢的。当线缆上的雷击过电压使防雷器中的气体放电管击穿短路时,初始的击穿电压基本为气体放电管的冲击击穿电压,放电管击穿导通后两极间维持电压下降到20~50V;另一方面,气体放电管的通流量比压敏电阻和TVS管要大,气体放电管与TVS等保护器件合用时应使大部分的过电流通过气体放电管泄放,因此气体放电管一般用于防护电路的最前级,其后级的防护电路由压敏电阻或TVS管组成,这两种器件的响应时间很快,对后级电路的保护效果更好。气体放电管的绝缘电阻非常高,可以达到千兆欧姆的量级。极间电容的值非常小,一般在5pF以下,极间漏电流非常小,为nA级。因此气体放电管并接在线路上对线路基本不会构成什么影响。 气体放电管的续流遮断是设计电路需要重点考虑的一个问题。如前所述,气体放电管在导电状态下续流维持电压一般在20~50V,在直流电源电路中应用时,如果两线间电压超过15V,不可以在两线间直接应用放电管。在50Hz交流电源电路中使用时,虽然交流电压有过零点,可以实现气体放电管的续流遮断,但气体放电管类的器件在经过多次导电击穿后,其续流遮断能力将大大降低,长期使用后在交流电路的过零点也不能实现续流的遮断;还存在一种情况就是如果电流和电压相位不一致,也可能导致续流不能遮断。因此在交流电源电路的相线对保护地线、相线对零线以及相线之间单独使用气体放电管都不合适,当用电设备采用单相供电且无法保证实际应用中相线和中线不存在接反的可能性时,中线对保护地线单独使用气体放电管也是不合适的,此时使用气体放电管需要和压敏电阻串联。在交流电源电路的相线对中线的保护中基本不使用气体放电管。 防雷电路的设计中,应注重气体放电管的直流击穿电压、冲击击穿电压、通流容量等参数值的选取。设置在普通交流线路上的放电管,要求它在线路正

钣金件设计规范

钣金件设计规范 1.范围 本设计规范规定了钣金件设计的一般要求和空调器需注意的要求 本设计规范适用于内销和出口的空调器产品中使用的钣金零件,其他产品可参考使用2.相关标准 QJ/MK02.001-2001a 房间空气调节器 GB/T 13914-1992 冲压件尺寸公差 QJ/MK05.022-2002 冷轧板喷涂件技术条件 QJ/MK 05.910-2001 连续电镀锌钢板及钢带 QJ/MK 05.912-2001 连续热镀锌钢板及钢带 3.内容 3.1 冲裁件 3.1.1 冲裁件最小冲孔尺寸与孔的形状、材料厚度、材料的机械性能及冲孔方式有直接关系。在设计方孔、圆孔、长方孔、椭圆孔、异形孔等时,要充分考虑以上因素, 自由凸模冲孔的最小尺寸见表—1,精冲圆孔的最小孔径见表—2,精冲腰形孔的e min/t见表—3。 表—1 自由凸模冲孔的最小尺寸 注:t为材料厚度,冲孔最小尺寸一般不小于0.3mm。 表—2 精冲圆孔的最小孔径

注:薄料取上限,厚料取下限 表—3 精冲腰形孔的e min/t 3.1.2 冲孔边缘离外形的距离(孔边距)过小时,会影响冲件的质量甚至模具的寿命,最小孔边距见表—4。 表—4 最小孔边距

注:精冲时薄料取上限,厚料取下限 3.1.3 在设计弯曲件和引伸件上的孔时,孔边缘与工件直壁之间应保持一定的距离,弯曲件和引伸件冲孔时的孔壁距见图—1。 图—1 弯曲件和引伸件冲孔时的孔壁距 3.1.4 冲裁件转角处需设计合适的圆角半径,冲裁件的最小圆角半径见表—5、表—6。 表—5 普通冲裁件的最小圆角半径 注:当t<1 mm时,以t=1 mm计算 表—6 精冲件的最小圆角半径

(完整版)web服务器安全标准

Web服务器安全标准 前言和文档控制 此文档是西安石油大学制定发布的有关信息安全政策规定、处理流程、行业标准和指导意见的系列文档之一。该文档应保证至少一年审核一次,以保证其有效性。 在没有得到文档发布者的明确授权下,此文档的全部或部分内容,均不得重制或发布。

目录 1目的 (3) 2范围 (3) 3责任 (3) 4Web服务器安全要求 (3) 4.1总则 (3) 4.2网络安全 (3) 4.3流量过滤 (3) 4.4合规性 (4) 4.5数据保护 (4) 4.6输入和输出管理 (4) 4.7安全代码/应用/插件 (4)

1目的 发布本文档所列标准的目的是为了保护学校网站和相关信息资产。本标准的目标是为了确保: ●按照现有最佳的实践经验,在全校统一部署安全控制措施,以消除或者最低限 度的减少系统漏洞和其他安全隐患。 ●学校能在信息安全的完善方面更方便的有据监管、理解风险和评估改进。 ●所有的院系部门和网站开发人员都能了解相应的安全需求 2范围 所列标准适用于学校所有的web网站服务器,包括:学校内部或第三方建设、采购、部署、修改和维护的。具体为: ●所有仅限内部和面向公共的web服务器 ●所有由外部供应商托管的面向公共的web服务器 ●所有通过学校或者代表学校的web服务器建设、采购、部署、修改和维护的 3责任 以下学校实体具体的信息安全责任 ●学校信息化委员会 ●信息安全部门领导 ●信息安全小组应支撑学校满足信息安全功能和防护的各项要求。 ●学院和部门领导对所在部门的信息安全负有义务和责任。 ●Web服务器用户对其处理的信息负有安全责任。 4Web服务器安全要求 4.1总则 4.1.1基于风险分析的深度信息安全防范手段应被采用,包括: 4.1.1.1安全控件在Web服务器的每一层次上都应部署,以避免过度依赖单一 安全防护手段。 4.1.1.2在所有Web服务器上应部署最基本的安全控制措施,以解决常见风险。 4.1.1.3安全控制措施应该是务实的、易于部署、有效和可以衡量的。 4.1.2在虚拟化环境中,所有能考虑到的安全因素都应当适用于主机系统、虚拟机 管理层和虚拟化管理工具。 4.1.3渗透性测试每年至少执行一次,并且在重要系统架构部署、应用升级或修改 后,都应测试。 4.1.4每季度应执行一次漏洞扫描。 4.2网络安全 4.2.1安全控制措施应涵盖每一个活跃版本的网络协议,包括IPv4和IPv6。 4.2.2Web服务器都应分配相应的静态IP地址,除了需要部署动态域名系统技术以 实现负载均衡的服务器。 4.2.3只使用唯一可信的授权DNS来源,避免受到DNS劫持和攻击。 4.2.4所有的非console口管理员级别的访问应使用高强度加密手段进行加密。 4.3流量过滤 4.3.1只有从Internet到特定的IP地址和授权的公共可用服务、协议和端口的入 站流量是允许的。 4.3.2从Web服务器的非授权出站流量是禁止的。

华为钢网设计规范(网络软件)

DKBA 华为技术有限公司企业技术规范 钢网设计规范 华为技术有限公司发布

版权所有侵权必究

目次 前 言 ................................................................................. .. (3) 1 范围 6 2 规范性引用文件 6 3 术语和定义 6 4 材料、制作方法、文件格式 6 4.1 网框材料 6 4.2 钢片材料 6 4.3 张网用丝网及钢丝网 6 4.4 张网用的胶布,胶 6 4.5 制作方法7 4.6 文件格式7 5 钢网外形及标识的要求7 5.1 外形图7 5.2 PCB居中要求8 5.3 厂商标识内容及位置8 5.4 钢网标识内容及位置8 5.5 钢网标签内容及位置8 5.6 MARK点8 6 钢片厚度的选择9 6.1 焊膏印刷用钢网9 6.2 通孔回流焊接用钢网9 6.3 BGA维修用植球小钢网9 6.4 贴片胶印刷用钢网9 7 焊膏印刷钢网开孔设计9 7.1 一般原则9 7.2 CHIP类元件10 7.2.1 0603及以上10 7.2.2 0402 11 7.3 小外形晶体11

7.3.1 SOT23-1、SOT23-5 11 7.3.2 SOT89 11 7.3.3 SOT143 12 7.3.4 SOT223 12 7.3.5 SOT252,SOT263,SOT-PAK 12 7.4 VCO器件12 7.5 耦合器元件(LCCC) 13 7.6 表贴晶振13 7.7 排阻14 7.8 周边型引脚IC 14 7.8.1 Pitch≤0.65mm的IC 14 7.8.2 Pitch>0.65mm的IC 14 7.9 双边缘连接器14 7.10 面阵型引脚IC 14 7.10.1 PBGA 14 7.10.2 CBGA,CCGA 15 7.11 其它问题15 7.11.1 CHIP元件共用焊盘15 7.11.2 大焊盘15 7.12 通孔回流焊接器件16 7.12.1 焊点焊膏量的计算16 7.12.2 钢网开口的设计17 7.12.3 钢网开口尺寸的计算17 7.13 BGA 植球钢网开口设计18 7.14 特例18 8 印胶钢网开口设计18 8.1 CHIP元件18 8.2 小外形晶体管19 8.2.1 SOT23 19 8.2.2 SOT89 19 8.2.3 SOT143 19 8.2.4 SOT252 19 8.2.5 SOT223 20

相关文档
最新文档