zoukankan      html  css  js  c++  java
  • 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、实验完毕,关闭虚拟机和所有窗口。

  • 相关阅读:
    Eclipse 修改maven 仓储Repository位置
    使用Eclipse构建Maven的SpringMVC项目
    The word is not correctly spelled问题解决
    navicat for mysql 显示中文乱码解决办法
    Missing artifact net.sf.json-lib:json-lib:jar:2.2.3:compile
    ApacheTiles实战
    使用Apache Tiles3.x构建界面布局
    SpringMVC整合Tiles框架
    最近遇到的问题
    Unity3D流行的游戏开发人员构建高速检查站系统
  • 原文地址:https://www.cnblogs.com/lzkalislw/p/13674132.html
Copyright © 2011-2022 走看看