《Web安全程序设计与实践》课件项目10_第1页
《Web安全程序设计与实践》课件项目10_第2页
《Web安全程序设计与实践》课件项目10_第3页
《Web安全程序设计与实践》课件项目10_第4页
《Web安全程序设计与实践》课件项目10_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目10XSS跨站攻击【项目描述】本项目对XSS跨站攻击和防护进行实训。本项目包含五个任务。在第一个任务,分别创建数据库的messages表和sessions表。在第二个任务,创建一个接收SessionID功能的网站,用于接收XSS攻击获取的SessionID。在第三个任务,创建一个持久型XSS跨站攻击漏洞的网站,实现游客可以向管理员留言,管理员登录后可以查看留言等功能。第四个任务对持久型XSS攻击进行测试并分析攻击原理。最后一个任务通过设置Cookie的HttpOnly属性、HTML转义和JavsScript转义实现对XSS跨站攻击的防护通过本项目,可以理解XSS跨站攻击产生的原理和危害,能够应用HttpOnly属性、HTML转义和JavaScript转义防护XSS攻击。【知识储备】XSS跨站攻击的原理XSS表示CrossSiteScripting(跨站脚本攻击),为不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS跨站攻击漏洞的原理是:由于大多数网站都提供了用户提交信息的功能(比如:发帖、评论、给管理员留言等),并通过网页浏览。因此,攻击者可以通过提交恶意HTML代码或者JavaScript代码,使得当这些信息被浏览时,嵌入其中的恶意代码便会被执行,从而实现攻击者的特殊目的。XSS跨站攻击漏洞的本质是使得被攻击的网页运行了不属于网页本身设计功能的HTML代码或者JavaScript代码。XSS攻击的分类XSS攻击手段令人眼花缭乱,按照XSS的恶意攻击代码是否在数据库中进行存储,可以分为非持久型XSS攻击和持久型XSS攻击。XSS攻击的危害破坏网页的正常功能,比如用户打开一个评论或者留言网页时不停的弹窗。盗取登录用户的Cookie,进而威胁账号安全。通过JavsScript脚本执行其它攻击。【任务10-1】创建数据库本任务在lab数据库新建两个表:messages表和sessions表。其中,messages表用于XSS跨站攻击漏洞的网站xss,以保存用户留言。sessions表用于接收SessionID功能的网站getsession,以保存接收到的SessionID。SQL脚本采用SQL脚本的方式在数据库lab创建messages表和sessions表。将脚本文件导入到数据库【任务10-2】建立接收SessionID功能的网站在本任务,创建一个包含两个页面的网站,一个用于Get方式接收并在数据库中保存SessionID,另一个用于查询保存的SessionID。在Apache的网站根目录C:\Apache24\htdocs\下新建一个文件夹getsession作为接收SessionID功能的网站目录,并将数据库连接文件con_database.php复制一份放在getsession目录下。本任务的测试在XSS攻击测试任务中进行。创建保存SessionID页面创建SessionID查询页面【任务10-3】建立留言功能的网站在本任务,创建一个网站,包含留言功能网页、管理员用户查看留言功能,并进行功能测试10-3-1任务实现本项目在项目8的基础上,增加游客提交留言功能和管理员浏览留言功能。将项目8的网站目录session下的所有网页复制到C:\Apache24\htdocs\xss目录下。因此,xss网站同时也具备了SQL注入攻击防护和Session欺骗防护的功能。创建游客留言功能网页创建留言功能的后台网页创建管理员查看留言网页将查看留言页面链接添加到welcome.php10-3-2留言功能测试游客留言功能管理员查看留言【任务10-4】XSS攻击测试在本任务,分别进行弹窗式XSS攻击测试、窃取管理员用户的Cookie信息、利用窃取的Cookie进行Session欺骗攻击,并XSS攻击的原理进行分析10-4-1弹窗式XSS攻击测试XSS跨站攻击的方式有多种,首先测试简单的弹窗XSS跨站攻击。使用IE浏览器打开网页http://localhost/xss/message.html,输入留言内容<script>alert('XSS漏洞^-^')</script>,并点击Submit按钮提交10-4-2窃取SessionID攻击测试游客留言管理员查看留言查看窃取的Cookie并进行Session欺骗10-4-3测试分析从以上XSS跨站攻击的过程发现,攻击者提交的信息在网页进行展示时会执行一些特殊的脚本,轻则破坏网页的正常显示(比如弹窗),重则可以窃取到管理员的Cookie信息进而实施Session欺骗攻击。因此,XSS跨站攻击的危害是很大的,在设计实现网站功能的时候必须要引起足够的重视。需要注意的是,XSS跨站攻击不仅可以针对Session验证的系统,对Cookie验证的系统同样适用【任务10-5】XSS攻击防护在本任务,对永久型XSS攻击实现三种组合方式的XSS攻击防护措施。一种是设置Cookie的HttpOnly属性,另一种是对HTML进行转义,第三种是对JavaScript进行转义。通过对持久型XSS跨站攻击的测试分析发现,凡是需要在网页展示的用户输入内容,都是不可信任的,都必须要进行处理。XSS跨站攻击的本质是当浏览器遇到HTML标签或者JavaScript标签时,会执行其中的脚本,而标签是由一对尖括号表示。因此,如果对用户输入的HTML和JavaScript代码的尖括号、单引号、双引号等特殊符号进行转义,则可以实现对XSS跨站攻击的防护。另外,禁止JavaScript对Cookie的读取,则可以防护窃取SessionID的XSS攻击。10-5-1设置Cookie的HttpOnly属性HttpOnly是微软提出的对Cookie做的扩展,主要是解决用户的Cookie可能被盗用的问题。现在HttpOnly被IE6以上的版本、Firefox、Chrome、Safari等浏览器支持。PHP的setcookie()函数支持httponly属性,如果httponly属性设置为TRUE,则该Cookie信息便不会被document.cookie访问,因此XSS攻击也不能够获取到SessionID参数。重复10-4-2节的攻击步骤,发现不能获得SessionID的记录,XSS跨站攻击失效,请自行验证。因此,设置Cookie的HttpOnly属性同样可以实现对Session欺骗和Cookie欺骗的防护。10-5-2HTML转义对于PHP语言,可以使用htmlentities()函数或者htmlspecialchars()函数把字符转换为HTML实体。如果输出的内容是HTML,使用HTML转义函数可以防护所有的XSS注入攻击。10-5-3JavaScript转义在JavaScript中的反斜杠“\”字符是转义字符,所以可以使用“\”连接各种编码(如16进制编码、Unicode编码等)的字符串运行代码。接下来验证在JavaScript中使用Unicode编码绕过HTML转义。【项目总结】从XSS跨站攻击测试可以发现,只要将用户输入的内容再显示出来,就存在跨站攻击的风险。如果保存在数据库中就是持久型XSS攻击,不保存在数据库就是非持久型XSS攻击。从XSS攻击的防护技术可以看出,通过设置Cookie的HttpOnly属性、使用输出用户提交的变量时使用HTML转义函数,以及在JavaScript代码中输出用户提交的变量使用JavaScript转义函数,可以有效的防护XSS攻击,同时也降低了Session欺骗攻击的风险。对非持久型XSS攻击的防护的方法与持久型是相同的,需要在使用echo()、exit()、print()等函数时,对用户输入的变量进行HTML转义。如果输出语句应用在J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论