配套课件-Web安全程序设计与实践.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《配套课件-Web安全程序设计与实践.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 配套 课件 Web 安全 程序 设计 实践
- 资源描述:
-
1、项目1 Web服务器平台安装与配置【项目描述】本项目对Web服务器平台的安装和配置进行实训。本项目包含四个任务,首先安装Windows Server 2008企业版操作系统,然后进行PHP软件包的安装与配置,接下来对MySQL数据库进行安装与配置,最后完成Apache Web服务器的安装与配置。通过本项目的实训,可以解释Web服务器平台的主流的组合方式以及Web服务器平台的构成,可以实施Web服务器平台的安装与配置。【知识储备】Web服务器平台的组合多种多样。本书搭建的Web服务器环境,操作系统选用Windows Server 2008简体中文企业版,Web服务器使用Apache2.4和PHP
2、7.1,数据库使用MySQL5.5。【任务1-1】安装Web服务器操作系统 在本任务,进行Windows Server 2008简体中文企业版操作系统安装。对于有一定Linux/Unix操作系统使用经验的,推荐使用CentOS、Ununtu等作为Web服务器操作系统。推荐采用VMware软件的方式安装Windows Server 2008操作系统,在VMware中运行的操作系统称之为虚拟机,安装并运行了VMware虚拟机的操作系统称为宿主机。由于VMware Workstation Pro 10是支持32位操作系统的最后一个版本,因此本书使用了VMware Workstation Pro 10
3、.0.7版本的个人桌面版虚拟机软件。如果安装的Windows Server 2008 企业版操作系统是SP1版本,需要首先将操作系统升级到SP2版本(如果直接安装了Windows Server 2008 SP2操作系统则可以忽略此步骤)。升级到SP2版本后再安装Universal CRT补丁Windows6.0-KB2999226-x86.msu即可。另外,实施本书的项目和任务需要安装使用三种浏览器:自带的IE浏览器(7.0版本)、Firefox浏览器(52.8.0版本)和360安全浏览器(9.1.0.434版本)。另外,还需要安装Notepad+(7.5.6版本)用以编辑网页。【任务1-2】
4、安装并配置PHP 在本任务,下载安装并配置PHP及依赖的运行环境,所使用的版本为7.1.16。在PHP官网下载VC14 x86 Thread Safe版本php-7.1.16-Win32-VC14-x86.zip,将其解压到C:php-7.1.16-Win32-VC14-x86。安装Microsoft Visual C+2015运行环境Visual C+Redistributable for Visual Studio 2015_x86.exe。配置步骤如下:生成配置文件php.ini 更改配置文件自定义扩展目录 开启php_mysqli扩展的动态链接库 设置错误报警级别【任务1-3】安装并配
5、置MySQL 在本任务,下载安装并配置MySQL数据库软件。从官网下载MySQL4,版本可以选择msi安装版,也可以选择zip免安装版。本书使用的版本为免安装5.5.59-win32版本,安装配置过程如下:解压软件包 生成配置文件my.ini 给MySQL配置环境变量 将MySQL注册为系统服务 在命令提示符窗口输入并运行net start mysql启动服务 其它操作 设置密码 登录MySQL 查看字符集【任务1-4】安装并配置Apache 在本任务,下载安装并配置Apache Web服务器软件。从官网5下载Apache2.4,版本为httpd-2.4.33-o102o-x86-vc14-r
6、2.zip,并解压到路径C:Apache24。Apache的配置步骤如下:修改Apache的路径 禁止目录浏览 加载PHP 启动Apache 其它操作命令 测试【项目总结】本项目安装和配置的Windows 2008 Server企业版操作系统、Apache Web服务器、PHP和MySQL数据库构成了基本的Web服务器平台。需要注意的是,实际需求不同,即使选用相同的软件,Web服务器平台的配置要求也不同。本项目所搭建的平台,为本书的实训项目提供了运行测试环境。【拓展思考】你还了解哪些Web服务器平台组合?项目2 Web开发基础【项目描述】本项目对SQL语言和MySQL数据库,以及HTML、Ja
7、vaScript、CSS和PHP开发基础进行初步实训。本项目共包含三个任务,首先是基本SQL语言和MySQL数据库的的使用,然后综合使用HTML、CSS和JavaScript设计一个静态网页,最后使用PHP语言将其修改为动态网页。通过本项目的实训,可以编写基本的SQL语句管理MySQL数据库,可以解释HTML、JavaScript、CSS和PHP编写的网页,可以进行静态和动态PHP网页开发。【知识储备】数据库管理系统的基本概念 数据库管理系统DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。常见的关系型数据库管理系统有Oracle、MySQL、SQL Server等,常见的
8、非关系型数据库管理系统有MongoDB、Redis、Memchache等。而数据库系统DBS是一个大的概念,不仅包括了DBMS和DB,还包括计算机操作系统以及数据库管理员等。关系型数据库是指采用了关系模型来组织数据的数据库,关系型数据库的最大特点就是事务的完整性和一致性,结构化查询语言是最重要的关系数据库操作语言 网页设计前端语言HTML、CSS和JavaScript 网页设计前端语言由浏览器负责解释执行,因此网页文件的源代码会从Web服务器发送到浏览器。层叠样式表CSS是一种用来表现HTML等文件样式的一种计算机语言,它也是一种描述性的标记语言。CSS为HTML标记语言提供了一种样式描述,定
9、义了其中元素的显示方式。这样,HTML元素用于网页内容的表达,CSS则是定义如何显示HTML元素,两个共同作用让网页内容实现需要的布局样式。JavaScript编程语言是一种脚本语言,主要用来向HTML页面添加交互行为 网页设计后端语言PHP 后端语言由服务器负责解释执行,结果以纯HTML的形式返回给浏览器。因此PHP文件不传递到用户端,用户端无法看到其源代码。PHP文件不需要编译成二进制文件,因此PHP编程语言也是一种脚本程序语言。PHP语言是一种应用非常广泛的动态网页设计程序语言。动态网页是指跟静态网页相对的一种网页编程技术。一般来说,PHP语言脚本需要和HTML标签混合编写。【任务2-1
10、】MySQL数据库的使用 在本任务,使用MySQL数据库管理系统完成数据库的创建和数据表的创建,并对数据表的记录进行增删改查操作。数据库的操作使用DDL语句。首先在命令提示符窗口登录MySQL。登录方法参见图 1-7所示。登录成功之后,首先创建一个数据库firstlab。使用的SQL语句为:CREATE DATABASE firstlab;注意SQL语句以分号结束。数据库创建成功之后,使用SQL语句USE firstlab;将当前数据库切换到firstlab。数据表定义 数据表的定义使用DDL语句。继续在该数据库中创建一个用户表users。该表包括三个字段,其结构如表2-1所示 数据表的操作
11、数据表的增、删、改、查使用DML语句。首先给users表添加一条记录,使用如下语句:INSERT INTO users(username,passcode)VALUES(admin,admin123);记录的查询使用如下语句:SELECT*FROM users;对上面插入的这条记录进行更新,将email字段修改为。SQL语句如下:UPDATE users SET email= WHERE id=1;最后讨论一下记录的删除。通常情况下表之间存在外键约束,删除记录就会出现删除异常。所以在实际应用中常常不会进行记录的删除,一方面避免外键关联造成的删除异常,另一方面保护了数据的完整性。MySQL数据库
12、的权限管理 MySQL数据库支持用户权限管理,大大增加了数据库的安全性。比如,如果只允许你执行select操作,那么你就不能执行update、insert等操作。如果只允许你从个IP地址连接MySQL数据库,那么你就不能从其它IP地址连接。【任务2-2】静态网页开发 在本任务,综合使用HTML、CSS和JavaScript语言设计一个网页,在网页中用一个表格显示用户的账号、密码、电子邮件地址等信息。创建HTML静态网页user.html 在Apache的网站根目录C:Apache24htdocs下新建一个文件夹user作为本项目的网站目录。打开Notepad+,新建一个文件,点击“编码”菜单并
13、将文件编码设置为“使用UTF-8编码”CSS的使用 CSS可以在HTML文件中使用混合编写的方式,也可以使用单独的CSS文件。使用单独CSS文件的好处是方便对网站的全局样式进行定义,实现所有网页风格样式的统一。要使用CSS对HTML页面中的元素实现一对一,一对多或者多对一的控制,就需要用到CSS选择器(或称为CSS选择符)以及一条或多条声明。即CSS选择器和声明组成了CSS的规则。在user.html文档中添加一些HTML标签,给一些标签添加ID或者类属性,并设置元素的CSS规则 接下来创建一个公共的main.css文件,以便将所有网页全局的HTML元素进行格式化 使用JavaScript显示
14、当前时间 在user.html的第44行之后添加一行HTML的代码用来显示当前时间 然后在第13行之后添加一段JavaScript脚本用来得到并控制时间的显示 这样,就会在页脚显示当前的年月日和时刻。虽然当前时间不停的在变化,但是该网页仍然只是静态网页。【任务2-3】PHP动态网页开发 本任务在静态网页user.html的基础上,利用PHP脚本实现从数据库firstlab的users表中读取信息并在网页表格中展示。将user.html复制并重命名为user_php.html,所做的修改工作均在user_php.html网页文件中进行。从本任务可以发现,动态网页虽然不需要修改网页源代码,但是网页
15、的内容会随着数据库中数据的变化而变化。【项目总结】本项目为本书将要进行的Web漏洞及防护项目准备了基本的数据库和SQL语言基础,以及HTML、JavaScript、CSS前端开发和PHP语言后端开发基础。在生产环境需要注意数据库的权限管理问题,数据库使用的字符集应和HTML文件、CSS文件、JavaScript文件和PHP脚本文件保持一致以避免出现显示乱码。【拓展思考】PHP代码可以混写CSS吗?尝试在自定义的outputusers()函数中将状态为0的记录用红色显示。如何给MySQL数据库的firstuser用户收回create创建表格的权限?项目3 万能密码登录Post型注入攻击【项目描述
16、】本项目对Post型SQL注入攻击和防护进行实训。本项目包含四个任务,首先建立建立用户信息数据库,然后开发一个基于Session验证的用户登录功能网站,并在网页表单使用Post的方式提交用户参数。接下来实现基于SQL注入方式的万能密码登录。最后通过分析万能密码SQL注入的原理,实现对Post型SQL注入攻击的多种防护方式。通过本项目的实训,可以解释和分析万能密码登录漏洞为例子的Post型SQL注入原理及危害,应用多种方式实现SQL注入攻击的防护。【知识储备】HTML的Post与Get提交信息方式 Post型SQL注入攻击使用了HTML的Post提交信息方式。在HTML中,经常会用表单进行信息的
17、收集,然后提交给服务器进行处理。HTML提交信息的方式有Get和Post两种。Get方式方式Post方式方式在在URL显示表单参数的显示表单参数的key/value值值不在URL里显示表单的数据长度有限制,只适合有少量参数的表单长度有限制,只适合有少量参数的表单表单提交的信息没有长度限制历史参数保留在浏览器历史中历史参数保留在浏览器历史中参数不会保存在浏览器历史中可以通过保留可以通过保留URL的方式保存数据的方式保存数据不能通过保留URL保存数据刷新不会重新提交刷新不会重新提交刷新会重新提交表单的数据集的值必须为表单的数据集的值必须为ASCII字符字符没有限制表 3 1 Post方式与Get方
18、式的主要区别 Session机制的原理 HTTP协议是无状态的,也就是说,客户端的每个HTTP请求都是独立的,与前面或者后面的HTTP请求都没有直接联系。这样的好处是,服务器不需要为每个连接维持状态而消耗大量资源。最初设计的HTTP协议只是用来浏览静态文件,无状态特点已经足够。但是随着Web应用的发展,需要变得有状态,比如需要保持用户的登录状态。Session机制就是用来保存用户登录状态的。用户提交登录信息并通过验证之后,在服务器将用户信息保存在Session变量中,在用户的浏览器则保存这个Session的ID(即SessionID)。当用户再次访问这个服务器时会将此SessionID提交,服
19、务器便可以验证此SessionID是否存在于Session变量中,进而判断是否为登录用户 基于Session机制的Web登录验证过程 用户账号信息提交 在Web服务器建立Session会话 退出登录 万能密码SQL注入攻击的原理 所谓万能密码,就是通过在输入的用户名或者密码构造出一个特殊的SQL语句,破坏原有的SQL语句结构和逻辑,最终达到欺骗服务器执行恶意的SQL命令,进而绕过权限检查登录系统。由于用户登录基本都是使用HTML的Post方式提交账号和密码等信息,因此万能密码登录是一种典型的Post型SQL注入攻击。SQL注入攻击的危害 虽然Post型和Get型注入攻击在方式上有所区别,但都是
20、通过破坏正常的SQL语句结构,实现对数据库非正常增删改查。SQL注入攻击的危害主要体现在:绕过登录检查;获取、篡改数据库信息;篡改网页内容、网页挂马;控制网站、甚至整个服务器等。【任务3-1】创建数据库 本任务采用SQL脚本的方式创建数据库lab。并在该数据库中建立表users,最后插入两条记录。在Apache的网站根目录C:Apache24htdocs下新建一个文件夹logintest作为本项目的网站目录。基于SQL脚本的方式创建数据库有两个步骤,分别是:创建SQL脚本 将脚本文件导入到数据库【任务3-2】建立基于Session验证的用户登录网站 在本任务,分别创建用户登录HTML页面和验证
21、登录的PHP后端页面,以实现用户登录功能。用户登录成功之后会跳转到欢迎页面,并创建退出登录页面销毁用户Session。最后进行功能测试,以验证所设计的功能。3-2-1 任务实现 创建用户登录页面login.html 设置编码方式为UTF8并保存 登录验证后端页面 欢迎页面 销毁session页面 3-2-2 功能测试 打开浏览器,在地址栏输入服务器的地址和相对路径以及文件名,即可访问。本书默认的浏览器客户端都是在Web服务器的本地访问,在地址栏输入URL的主机地址都是localhost或者127.0.0.1,比如输入http:/localhost/logintest/login.html打开登
22、录页面 在该页面点击超链接“欢迎访问”,进入welcome页面 在该页面点击超链接“退出登录”,进入logout页面注销登录【任务3-3】万能密码SQL注入攻击测试 在本任务,利用万能密码进行Post型SQL注入攻击测试,绕过登录检查进入欢迎页面。并对万能密码注入攻击的原理进行分析,最后讨论其它形式的万能密码SQL注入及其原理。3-3-1 测试过程 用户名注入 在Username输入:or 1=1 or,Password随便输入(比如输入123),点击Submit按钮则可以登录进入系统 注意:引号为英文的单引号 在欢迎登录页面,可以看到登录用户为admin 密码注入 在Username随便输入
23、(比如输入admin),在Password输入or 1=1,也可以登录系统 其效果与用户名注入方式相同 3-3-2 其它形式的万能密码 or=or 注意都是单引号 将其代入到SQL语句的变量后,则查询语句变成了:select*from users where username=or=or and passcode=123 该语句的条件是恒成立的,因此查询的结果也是users表的全部记录-注释 也可以使用注释的方式实现万能密码,比如or 1=1-(注意:两个连续的减号后面必须有一个空格)。将其代入到SQL语句的变量后,则查询语句变成了:select*from users where userna
24、me=or 1=1-and passcode=123 在SQL语句中,两个减号表示后面的语句被注释掉。因此该查询语句变成了:select*from users where username=or 1=1 该条件是恒成立的,查询的结果也是users表的全部记录#注释 注释型的万能密码也可以说使用#(即英文的井号),比如or 1=1#。将其代入到SQL语句的变量后,则查询语句变成了:select*from users where username=or 1=1#and passcode=123 去掉注释后的查询语句变成了:select*from users where username=or 1=
25、1 该语句的查询效果与以上相同 3-3-3 测试分析 在用户名注入情况下,将字符串or 1=1 or代入到check_login.php页面第16行的变量$username,将字符串123代入到变量$passwd,则SQL查询语句select*from users where username=$username and passcode=$passwd 变成了:select*from users where username=or 1=1 or and passcode=123 注意:为两个连续的单引号。可见,字符串or 1=1 or的第一个单引号闭合$username的第一个单引号,第二个
展开阅读全文