华为Web应用安全开发规范(3)

2019-07-30 13:28

最小的限度。 规则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(\ response.setHeader(\ response.setDateHeader(\ %> 注意:以上代码对于采用强制缓存策略的代理服务器不生效(代理服务器默认是不缓存的),要防止代理服务器缓存页面,可以在链接后加入一个随机数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赋值为\,如下

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接口。 实施指导:


华为Web应用安全开发规范(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初二数学变量间的关系专题提高试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: