通用安全编码规范.docx

上传人:wj 文档编号:85434 上传时间:2022-10-02 格式:DOCX 页数:39 大小:62.94KB
下载 相关 举报
通用安全编码规范.docx_第1页
第1页 / 共39页
通用安全编码规范.docx_第2页
第2页 / 共39页
通用安全编码规范.docx_第3页
第3页 / 共39页
通用安全编码规范.docx_第4页
第4页 / 共39页
通用安全编码规范.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

通用安全编码规范.docx

《通用安全编码规范.docx》由会员分享,可在线阅读,更多相关《通用安全编码规范.docx(39页珍藏版)》请在冰豆网上搜索。

通用安全编码规范.docx

天翼电子商务有限公司

信息技术部

【】通用安全编码规范

<文档编号:

BESTPAY-DMAQ-05>

保密申明

本文档版权由天翼电子商务有限公司信息技术部所有。

未经天翼电子商务有限公司信息技术部书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的部分或全部,并以任何形式传播

目录

1目的

为保障天翼电子商务有限公司(以下简称“翼支付”)支付平台的安全性,构建安全健壮的程序,结合翼支付Web安全遇到的问题以及启明星辰安全研究实验室在Web攻防及代码安全的理论和实践积累,特制定本规范,旨在为翼支付开发团队提供设计及编写应用程序时普遍应该遵循的原则。

为充分理解本规范内容,请:

Ø了解应用程序将会受到的威胁;

Ø理解必须考虑的威胁;

Ø在程序设计阶段考虑到这些威胁。

2范围

本规范从应用安全开发的角度出发,结合翼支付平台系统的特点和常见的安全问题,给出支付平台应用系统安全开发的规范。

供翼支付平台应用系统开发部门内部使用,适用翼支付平台应用系统项目开发的工作。

本规范定义了翼支付平台应用系统安全开发和编码安全相关的技术要求。

本规范主要提供设计应用程序时应该遵循的一些指南和原则。

在应用程序易受攻击的重要环节应采用系统的方法。

将重点放在程序部署、输入验证、身份验证和授权、加密及数据敏感度、配置、会话、异常管理以及适当的审核和记录策略上,以确保应用程序的安全可靠性。

3规范概述

当今电子商务时代,应用系统为架构设计人员、开发人员提出一系列复杂的安全问题。

为应对这些安全问题,须要应用安全思想来构建应用程序。

在初始阶段,应该使用可靠的安全体系结构和设计方法,同时要结合考虑应用程序的部署以及企业的安全策略。

如果不能做到这一点,将导致在现有基础结构上部署应用程序时,导致危及应用系统的安全性。

本规范提供初步的安全体系结构和设计指南,并按照翼支付平台常见的应用程序漏洞类别进行组织。

这些指南是应用系统程序安全的重要方面,并且是经常发生错误的领域。

4安全编码的原则

Ø程序只实现你指定的功能

Ø永远不要信任用户的输入,对用户输入数据做有效性检查

Ø必须考虑意外情况并进行处理

Ø不要试图在发现错误之后继续执行

Ø尽可能使用安全函数进行编程

Ø小心、认真、细致地编程

5Web应用程序常见安全问题

下面的安全问题是根据应用程序漏洞类别描述的。

实际经验表明,如果这些领域的设计存在薄弱环节,将会导致安全漏洞。

下表列出了漏洞的类别,每个类别都突出显示了由于设计不当可能会导致的潜在问题。

漏洞类别

由于设计不当而引起的潜在问题

输入验证

嵌入到查询字符串、表单字段、cookie和HTTP头中的恶意字符串的攻击。

这些攻击包括命令执行、跨站点脚本(XSS)、SQL输入和缓冲区溢出攻击。

身份验证

标识欺骗、密码破解、特权提升和未经授权的访问。

授权

访问保密数据或受限数据、篡改数据以及执行未经授权的操作。

配置管理

对管理界面进行未经授权的访问、具有更新配置数据的能力以及对用户账户和账户配置文件进行未经授权的访问。

敏感数据

泄漏保密信息以及篡改数据。

会话管理

捕捉会话标识符,从而导致会话劫持及标识欺骗。

加密

访问保密数据或者账户凭据,或者二者均能访问。

参数操作

路径遍历攻击、命令执行以及绕过访问控制机制,从而导致信息泄漏、特权提升和拒绝服务。

异常管理

拒绝服务和敏感的系统级详细信息的泄漏。

审核和记录

不能发现入侵迹象、不能验证用户操作,以及在诊断问题时出现困难。

5.1跨站脚本攻击

5.1.1定义

什么是跨站脚本攻击:

跨站脚本攻击(通常简写为XSS)是最普通的web应用安全漏洞,当应用程序在发送给浏览器的页面中包含用户提供的数据,没有经过严格验证或转义,那么攻击者就有可能利用网站程序对用户输入过滤不严,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

5.1.2危害

Ø敏感数据被获取(cookie盗取)

Ø网络钓鱼

Ø获取web用户的网页内容

ØSessionRiding(CSRF攻击)

Ø获取用户的键盘击键数据

ØWeb僵尸

ØXSS蠕虫

攻击者能在受害者浏览器中执行脚本以劫持用户会话、迫害网站、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。

入侵者便通过技术手段在某个页面里插入一个恶意HTML代码,例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。

如这句简单的javascript脚本就能轻易获取用户信息:

alert(document.cookie),它会弹出一个包含用户信息的消息框。

入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍作分析便获取了用户的敏感信息。

跨站脚本攻击的危险,在如今WEB安全越来越得到重视,他的危险性也越来越大。

有效防止跨站脚本攻击,是WEB程序是否安全的一个重要标准。

5.1.3解决方法

主要防御方式

5.1.3.1验证输入

验证输入很简单,检查每个输入的有效性。

这可能意味着很多东西,但在典型的和简单的情况下,这意味着检查输入类型和数据的长度。

例如,如果你是从一个文本框接受一个标准的邮政编码,你会知道,唯一有效的类型是一个数字(0-9),而长度应该是6,不能多也不能少。

并非所有的案例都如此简答,但很多是相似的。

下图显示验证输入的架构。

这里的关键是,一切都进行验证,所有的输入,这并不来自于应用程序(包括用户输入,请求头,Cookie,数据库数据……)。

5.1.3.2编码输出

对于不支持HTML代码的地方,可用编码输出。

如:

Server.UrlEncode等方法编码输出。

优点:

安全可靠。

缺点:

不支持HTML代码。

对于验证输入的另一面就是编码输出。

编码输出,是用来确保字符被视为数据,而不是作为HTML元字符被浏览器解析。

这些技术定义一些特殊的“转义”字符。

没有正确转义的数据它仍然会在浏览器中正确解析。

编码输出只是让浏览器知道数据是不是要被解析,达到攻击无法实现的目的。

需要编码的部分:

HTML实体

HTML属性

Javascript

CSS

URL

5.1.3.3辅助防御方式

防御手段一:

iframesecurity=“restricted”

保护级别:

★★★★

描述:

通过设置iframesecurity=“restricted”,能有效防止iframe类的攻击(对IE有效)。

优点:

有效防止iframe的攻击。

防御手段二:

HttpOnly

保护级别:

★★★★

描述:

设置Cookie的HttpOnly属性,有效地防止Cookie通过脚本泄密(IE6SP1以上、Firefox3)。

优点:

有效保护了用户的Cookie信息。

应用举例:

系统中,所有登录验证的地方,验证成功后设置authCookie.HttpOnly=true,设置Cookie的HttpOnly属性,这些都应用于用户登录成功的地方。

防御手段三:

字符过滤

保护级别:

★★★★

描述:

通过函数进行过滤,能有效防止常见跨站脚本的跨站攻击。

主要过滤常见恶意脚本代码,如:

|frameset|ilayer|layer|bgsound|title|base>

OnX事件代码、Javascript、Vbscript和Style中的expression、behaviour、script、position等。

但过滤可能存在不完全的情况。

建立自己的XSS攻击库,方便测试和收集新的攻击方式,使过滤函数更加完善。

优点:

支持HTML,有效防止大部分攻击代码。

缺点:

可能存在过滤不全的情况。

5.2SQL注入

5.2.1定义

什么是SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。

简单来说,注入往往是应用程序缺少对输入进行安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行,注入漏洞十分普遍,通常能在SQL查询、程序参数等中出现。

下图为SQL攻击原理图:

5.2.2危害

注入能导致数据丢失或数据破坏、缺乏可审计性或是拒绝服务。

注入漏洞有时甚至能导致完全接管主机,主要危害有以下几点:

Ø绕过防火墙进行攻击

Ø绕过web应用程序的验证过程

Ø非法越权操作数据库内容

Ø随意篡改网页内容

Ø添加系统账户或数据库账户

Ø上传和下载非法文件

Ø本地溢出并获取系统最高权限

Ø安装木马后门/僵尸网络

5.2.3解决方法

SQL注入实例:

StringsqlString=“SELECT*FROMusersWHEREfullname=”’+form.getFullName()+’”ANDpassword=”’’’’‘+form.getPassword()+’“”;

正常:

username=tony,password=123456

SELECT*FROMusersWHEREusername=tony’ANDpassword=’123456’

攻击:

username=tony,password=’OR‘1’=’1

SELECT*FROMusersWHEREusername=tony’ANDpassword=‘’OR‘1’=’1’

参数化查询预处理

对于JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PrepareStatement不允许在不同的插入时间改变查询的逻辑结构。

如验证用户是否存在的SQL语句为:

selectcount(*)fromusertablewherename=’用户名’andpswd=’密码’

如果在用户名字段中输入’or‘1=1’or‘1’=’1

或是在密码字段中输入1’or‘1’=’1

将绕过验证,但这种手段只对Statement有效,对PreparedStatement无效,PreparedStatement相对Statement有以下优点:

Ø防注入攻击

Ø多次运行速度快

Ø防止数据库缓冲区溢出

Ø代码的可读性可维护性好

5.3恶意脚本执行

5.3.1定义

恶意文件执行是一种能够威胁任何网站形式的漏洞,只要攻击者在具有引入(include)功能程式的参数中修改参数内容,WEB服务器便会引入恶意程序内容从而收到恶意文件执行漏洞攻击。

5.3.2危害

攻击者可利用恶意文件执行漏洞进行攻击取得WEB服务器控制权,进行不法利益或获取经济利益。

5.3.3解决方法

Ø验证输入,验证上传文件名

Ø检查上传文件的大小

5.4文件上传漏洞

5.4.1定义

Web应用程序在处理用户上传的文件时,没有判断文件的扩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1