• HTTP攻击与防范-跨网站脚本攻击


    实验目的

    1.了解XSS -跨网站脚本攻击带来的危险性。 2.掌握XSS -跨网站脚本攻击的原理与方法 3.掌握防范攻击的方法

    实验原理

    跨网站脚本攻击之所以会发生,是因为网站的Web应用程序对用户的输入数据没有进行检验。黑客将攻击用的JavaScript程序代码加在HTTP链接的后面,Web应用程序直接执行这个HTTP链接,因而让攻击用的JavaScript程序代码被启动。

    实验内容

    1.了解XSS -跨网站脚本攻击带来的危险性。

    2.掌握XSS -跨网站脚本攻击的原理与方法

    3.掌握防范攻击的方法

    实验环境描述

    1、 学生机与实验室网络直连; 2、 VPC1与实验室网络直连; 3、学生机与VPC1物理链路连通;

    实验步骤

    1、 学生打开虚拟机,输入用户名和密码,用户为admin密码为 123456,进入系统

    图片描述

    2.进入系统后首先打开xampp工具,然后手动开启apache、MySQL服务

    图片描述

    3.打开浏览器,输入localhost:8080/example_code/ 如图: 图片描述

    4、找到“(4)跨网站脚本攻击(Cross Site script,XSS)”项,并点击打开,如图1。 图片描述

    5、开始攻击   攻击一: 打开“演示1”,以用户名daniel,密码123456登录,然后点击登录,如图2: 图片描述

    6、会出现提示信息,是否记住密码,可以选择是也可以选择否,这里我们选择否,并勾选上“不在保存密码”。如图: 图片描述

    7、使用者的账号已经使用隐藏字段user保存起来,你将会看到如下效果,如图3。 图片描述

    8、然后开始攻击,打开“攻击1”开始攻击,浏览器地址栏里就会显示显示出user的信息,如图4: 图片描述

    9、攻击二: 打开“攻击2”,点击“点击这里”链接,浏览器就会弹出一个框,显示用户的用户名以及密码,如下图:

    图片描述

    图片描述

    注:如果单击超链接后没有显示对话框,请您检查下列两个事项:

            (1)  检查Internet Explorer的活动脚本功能是否打开。如果活动脚本功能没有打开,就无法执行网页中的Javascript代码。
    
            (2)  检查PHP的php.ini文件中的magic_quotes_gpc的设置值是否设置为Off。
    

    10、相对“攻击2”的防护如下:

    点击“防护2”然后点击“点击这里”,就会执行下列的HTTP链接:

    http://localhost:8080/example_code/source/code4/ex4-2.php?user=<script>alert(document.cookie);</script>
    

    此跨网站脚本会变成普通的字符串,而不是能够在客户端执行的JavaScript代码。效果如图所示

    图片描述

    图片描述

    htmlspecialchars函数将

    <script>alert(document.cookie);</script>
    

    转换成:

    <script>alert(document.cookie);</script>

    “<”字符被转换成HTML字符码<;

    “>”字符被转换成HTML字符码>。

    由于htmlspecialchars函数的作用,在c:\xampp\htdocs\example_code\source\code4\ex4-2-attack-1.html文件中的隐藏跨网站脚本的HTTP链接:

    <script>alert(document.cookie);</script>
    

    会被当成普通的字符串来显示,而不再是可以执行的JavaScript代码。

    11、攻击三:

    点击“攻击3”地址就转到 localhost:8080/example_code/source/code4/ex4-3-attack.html如图:

    图片描述

    12、然后点击“点击这里”地址跳转到一下地址:

    
     http://localhost:8080/example_code/source/code4/ex4-3.php/%22><script>alert(document.cookie);</script>
    

    执行结果如下图所示。

    图片描述

    在这里又出现了对话框,显示了使用者刚才输入的账号与密码。

    13、防护方法:

    (1)拆解

    标签的内容

    现在我们来看看ex4-3.php的标签的内容:

    
          <form action=" example_code/source/code4/ex4-3.php/"><script>alert(document.cookie);</script>" method="post">
    

    这可以分解成3部分。

            (1) :这是标签现在的内容,只剩下action属性,method属性已经不见了。

    
            (2)  <script>alert(document.cookie);</script>
    

    这是可执行的JavaScript代码。

            (3)"method="post">:这是剩下的没有意义的字符串。

    (2)避免$_SERVER["PHP_SELF"]被篡改可以加上htmlspecialchars函数

        源码请查看:C:/xampp/htdocs/example_code/source/code4/ex4-4.php

        基本上如果是将表单数据传送给同一个文件处理时:" method="post">action属性是不需要的,将action属性设置为空字符串:就可以直接避免$_SERVER["PHP_SELF"]服务器变量被跨网站脚本篡改的问题。

    14、实验完毕,关闭虚拟机和所有窗口。

  • 相关阅读:
    java static关键字的四种用法
    修改Intellij IDEA模板注解@author变量user内容
    iIDEA: 运行Scala代码右键没有Run选项
    idea 无法创建Scala class 选项解决办法汇总
    scala之idea下如何新建scala工程
    scala之windows环境安装与配置
    @RestController注解
    @component的作用详细介绍
    springboot 日期参数前后台转换问题
    MySQL数据库硬件选择
  • 原文地址:https://www.cnblogs.com/lzkalislw/p/13674132.html
Copyright © 2020-2023  润新知