第3章_电子商务安全技术(8课时)讲述.ppt

  1. 1、本文档共187页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章_电子商务安全技术(8课时)讲述

第3章 电子商务安全技术 第3章 电子商务安全技术 安全目标和威胁的对象 计算机安全包含三个重要的安全目标:机密性、完整性、可用性。 多数威胁都是以破坏机密性、完整性和可用性为目标。 威胁实施者主要包括:自然现象、偶然事件、无恶意的用户和恶意攻击者。 威胁的对象主要包括软件、硬件、数据和通信线路这四种资源。 适度安全准则 上述三个安全目标之间可能存在彼此矛盾。 在安全目标中找到一个恰当的平衡点。 根据实际需要,提供适度的安全目标加以实现; 计算机资源被保护的程度应该与它们的价值是一致的。 机密性与可用性的平衡关系 第3章 电子商务安全技术 3.1 程序安全 3.2 操作系统安全 3.3 数据库安全 3.4 网络安全 3.1 程序安全 3.1.1 程序漏洞 3.1.2 恶意代码 3.1.1 程序漏洞 三种典型的非恶意程序漏洞: 缓冲区溢出; 不完全输入验证; “检查时刻到使用时刻”错误 缓冲区溢出 缓冲区是一个用于存储数据并且容量有限的内存空间。 1 char buffer[10]; 2 for (i=0;i=10;i++) 3 buffer[i]=‘A’; 在数据存储过程中,若超过了缓冲区的最大容量,则将发生缓冲区溢出。 缓冲区溢出是最为常见的一种安全漏洞。 缓冲区溢出的位置可以出现在任何地方,如堆栈、堆和静态数据区等。 目标程序运行时存储区的典型划分 缓冲溢出(续) 当出现缓冲溢出,运行的程序可能以下三种情况: 运行正常 被覆盖的是无用数据,并且没有发生访问违例; 运行出错 包括输出错误和非法操作等; 受到攻击,程序开始执行有害代码。 攻击者精心设计覆盖哪些数据以及用什么数据来覆盖。 缓冲区溢出攻击方法 攻击者可以利用缓冲区溢出漏洞,恶意造成缓冲区溢出: 1.将对应于机器代码指令的数据写入到缓冲区从而将攻击代码植入到被攻击程序的地址空间; 2.攻击者通过寻求触发攻击代码的方法来获得目标系统的控制权。 获得目标系统控制权的方法 获得目标系统控制权的最常见手段: 修改堆栈指针 修改返回地址。 运行时的堆栈分配 缓冲区溢出发生在堆栈空间 stack缓冲区溢出例子 void OutputString (char* str) { char buffer[8]; strcpy(buffer, str); printf(Input is %s\n, buffer);} int main(int argc, char** argv) { OutputString(argv[1]); return 0; } Stack溢出实例结果 Heap区缓冲区溢出 Heap就是由应用程序申请动态分配的内存区。 在编译的时候被初始化。 目标程序运行时,对内存的动态申请是发生在Heap(堆)里的。 C语言可以采用malloc()从Heap中申请相应的空间,采用free()释放相应的空间; C++语言可以采用new()从Heap中申请相应的空间,采用delete()释放相应的空间; Heap区缓冲区溢出实例 ?#include stdio.h ?#include stdlib.h ?#include unistd.h ?#include string.h ?#define BUFSIZE 16 #define OVERSIZE 8 /* 将覆盖buf2的前OVERSIZE个字节 */ int main() { u_long diff; Heap区缓冲区溢出实例(二) char *buf1 = (char *)malloc(BUFSIZE); char *buf2 = (char *)malloc(BUFSIZE); diff = (u_long)buf2 - (u_long)buf1; printf(buf1 = %p, buf2 = %p, diff = %d bytes\n, buf1, buf2, diff); memset(buf2, A, BUFSIZE-1); buf2[BUFSIZE-1] = \0; printf(before overflow: buf2 = %s\n, buf2); memset(buf1, B, (u_int)(diff + OVERSIZE)); printf(after overflow: buf2 = %s\n, buf2); …… return 0;} 溢出前Heap区分配 溢出后Heap区分配 防御手段 基于探测方法的防御措施: 不完全输入验证 当程序接受到被认为不可能出现的输入时,程序将可能会出现故障。 避免不完全输入验证的最重要的规则就是:一个安全的程序不应该完全信任来自外界的任何输

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档