WEB应用系统编码与部署安全规范
WEB应用系统编码与部署安全规范
总则
第一条为规范公司业务系统 WEB 应用编码和部署的安全控制和管理,特制定本规范,并作为安全检查及考核的参考依据。
第二条本规范中列出的是常见安全措施和高风险的漏洞,在软件产品研发与系统部署的过程中,对本规范未能尽述的必要安全措施,仍应予以采用。
第三条第四条本规范每年复审一次,其它时候也可以根据需要进行修订并发布。本规范的解释权和修改权归属我司信息技术部。
第二章适用范围
第五条第六条本规范适用于我司所有在线业务系统、测试系统的 WEB 应用。
本规范可作为其他非 WEB 应用的编码和部署安全办法参考。
第二章软件编码安全
第七条 SQL 语句的参数应以变量形式传入
(一)在对数据库进行查询与各类操作时,SQL 语句中的参数应以变量形式传输给服务器,不应直接将参数的值拼接到 SQL 语句的文本中。
(二)参数的类型包括所有数据类型,而不仅是字符串类型。
(三)参数值的来源包括但不限于:用户输入的数据、从数据库中读出的数据、从配置文件中读出的数据、从外部系统中获得的数据、其它程序逻辑计算得出的数据,等等。
(四)SQL 语句的执行位置包括但不限于:代码中的 SQL 语句,数据库的存储过程、触发器、定时器等。
(五)应用程序在处理用户非法 URL 请求,触发后台应用程序的 SQL 错误时,应返回处理后的错误页面提示,禁止直接抛出数据库 SQL 错误,如出现ORA-xxx 等等。
第八条页面中的非源代码内容应经过 URI 编码
(一)页面中的非源代码内容,应该以 URI 编码后的字符出现,避免特殊字符直接出现在页面中。
(二)内容的来源包括但不限于:在服务器端由程序生成的页面内容、在浏览器端由脚本生成的页面内容(如:javascript 中的 document.write 函数)。
(三)页面中的隐藏内容、页面格式控制等,也应受本条约束。
第九条页面中拼装的脚本应校验元素来源的合法性
(一)在浏览器端拼装并运行(如:利用 javascript 的 eval 函数执行)的脚本,应校验拼装元素的来源合法性,确定其中没有危害性的内容。
(二)校验的范围包括但不限于:变量名元素应符合标识符的规则、整型元素只包含数字、元素中不包含特殊字符。
第十条页面请求处理应校验参数的最大长度
(一)WEB 服务器在接受页面请求时,应校验参数的最大长度,截断超出最大长度的范围。
第十一条登录失败信息错误提示应一致
(一)WEB 服务器在接受用户登录请求时,不应区分登录失败的提示信息(如:用户名不存在、密码错误、密码已过期等),应采用统一的失败提示信息(如:错误的用户名或密码)。
第十二条避免页面上传任意扩展名的文件
(一)WEB 服务器在接受页面上传文件时,应对文件名进行过滤,仅接受指定范围的文件(如:图片, .zip 文件等),同时,要修改上传后的文件名,不应接受可能存在危险的文件(如:.jsp, .sh, .war, .jar 文件等)。
(二)如果出于业务的需要(如:网盘等)必须接受任意扩展名的文件,则应自动修改上传文件的扩展名,并注意采用统一的无风险的扩展名命名规则。
第十三条避免接受页面中的主机磁盘路径信息
(一)WEB 服务器接受的页面请求中的任何内容,不得作为主机磁盘路径(包括相对路径)
处理,尤其不得在程序中提取磁盘上的目录、文件的内容传送到页面。
第十四条第三方产品的合法性
(一)应选择合法的第三方产品,在使用第三方产品前,需要进行安全的评估和版本筛选,具体范围和使用请遵循《我司软件开发第三方产品使用规范》
第三章系统部署安全
第十五条限制主机上 WEB 系统启动用户的权限
(一)应将 WEB 系统的启动用户的权限限制在最小范围内,禁止该用户访问其它不必要的路径(如:/etc/、/root)。
第十六条隐藏后台调试信息
(一)WEB 系统、数据库等报告的异常信息、调试信息不应该出现在页面上。
第十七条密码加密存储
(一)WEB 系统中存储的密码应采用一定的加密算法,以密文形式存放。此处所指的密码包括但不限于:
字符串长度web1.配置文件中的主机、网络、数据库、邮箱的密码;
2.数据库中的用户资料密码;
(二)加密算法的选择应根据实际需要,首选不对称加密算法,次选破解难度高的对称加密算法。
第十八条隐藏重要配置参数信息
(一)对于重要的配置参数信息,应采用必要的隐藏措施,具体技术请遵循《我司软件开发敏感参数保护规范》
(二)此处所指的配置参数包括但不限于:
1. 重要的用户名、密码;
2. 重要设备的内网地址(如:数据库、存储设备);
第十九条隐藏日志文件
(一)不应将日志文件的路径设置在页面可达的位置,用户通过页面应该无法访问到系统产生的日志文件。
第二十条禁用 WebDAV,或者禁止不需要的 HTTP 方法
(一)在无特定的需求情况下,应只开放 GET, HEAD, POST 等安全的 HTTP 方法,禁用 PUT, DELETE, OPTIONS 等具有操作性质的 HTTP 方法。
第二十一条保证管理平台、测试账号口令强度
(一)WEB 系统的管理平台、测试账号的口令应具有足够的强度。具体要求请遵循《我司公司系统帐号口令管理办法》。
第二十二条
定期核查文件上传路径、日志路径中是否存在木马
(一)应定期对不可能出现代码的路径进行检查,及时发现与排除可能存在的木马。
(二)需要检查的路径包括但不限于:用户文件上传路径、日志文件路径。
第二十三条及时删除应用系统临时文件
(一)WEB 系统中不应该含有不必要的文件。包括但不限于:.CVS 文件夹、.svn 文件夹、临时备份文件等等。
(二)对于 WEB 页面备份文件,不要以.bak 文件存放(如 index.jsp.bak 等)
第二十四条重要系统隔离
(一)在部署 WEB 系统时,应根据实际情况,尽量使重要系统之间互相隔离、重要系统与其它系统之间隔离。
(二)隔离措施包括但不限于:主机分离、数据库分离、网段隔离。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论