IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> XSS漏洞 -> 正文阅读

[PHP知识库]XSS漏洞

一、XSS漏洞简介

XSS(Cross-Site Scripting):跨站脚本攻击,为不与层叠样式表的缩写混淆,将跨站脚本攻击缩写为XSS。

XSS漏洞是一种在Web应用中常见的安全漏洞,它允许用户将恶意代码植入Web页面,当其他用户访问此页面,植入的恶意代码就会在其他用户的客户端执行。

二、XSS的分类

1、反射型XSS漏洞

利用反射型XSS漏洞植入的恶意代码不会存储在服务器端,一般通过搜索页面,需要构造植入恶意代码的Web页面,诱骗受害者访问该页面,才能触发攻击。

2、存储型XSS漏洞

利用存储型XSS的恶意代码存储在服务器中,一般通过留言板、个人信息、文章发表等功能的页面中。如果页面对用户输入的数据过滤不严格,恶意用户会将恶意代码存储到服务器中。这类XSS漏洞代码非常严重,因为恶意代码会存储到服务器中,客户端每次访问服务器都会触发恶意代码。

3、DOM型XSS漏洞

DOM型XSS漏洞是基于文档对象模型(Document Object Model)的一种XSS漏洞。

三、反射型XSS

漏洞代码分析:

<?php
if(isset($_GET['name'])){
    $name=$_GET['name'];
    echo "<h2>"."Hello".$name."<h2>";
}else{
    echo "参数错误";
}

输入以下测试语句:

http://127.0.0.2/name.php?name=zhang

会输出Hellozhang,如图3.1所示。

图3.1 输入name=zhang的返回结果

?输入以下测试语句:

?http://127.0.0.2/name.php?name=<script>alert('xss')</script>

会执行植入的XSS恶意代码,触发弹窗,如图3.2所示。

图 3.2 利用反射型XSS漏洞的效果

?分析:某些情况下,用户输入的内容会直接通过浏览器显示,因为浏览器会识别HTML标签和JavaScript代码,因此在没有对用户输入的内容做过滤时,当用户提交的内容存在JavaScript代码时会直接被浏览器识别并执行。

四、存储型XSS

漏洞代码分析:

if(array_key_exists("message",$_POST) $$ $_POST['message'] != null){
    $message=escape($link,$_POST['message']);
    $query="insert into message(content,time) values ('message',now())";
    $result=execute($link,$query);
    if(mysqli_affected_rows($link)!=1){
        $html.="<p>数据库出现异常,提交失败!</p>";
    }
}

?上述代码将用户提交的表单内的值以POST形式提交到message数据表中,由于代码没有对提交的内容做限制以及过滤,当用户上传恶意的JavaScript代码时同样会被上传到数据库中,如图4.1所示

图 4.1 上传至数据库的内容

?由于恶意代码被Hack上传至服务器,所以当其他用户访问该页面时,恶意代码都会被调用并且由用户的浏览器执行。如图4.2 所示。

图 4.2 普通用户访问时页面

?五、DOM型XSS

5.1、简介

DOM是W3C组织推荐的处理可扩展标记语言的标准编程接口,可以使程序和脚本能够动态访问和更新文档内容、结构以及样式。

DOM:通过JavaScript,可以重构整个HTML文档,就是说可以添加,移除等等,对页面的某个东西进行操作时,JavaScript就需要获得对HTML文档中所有元素进行访问的入口,这个入口就是DOM,所以在DOM型的XSS漏洞中,DOM可以看成是一个访问HTML的标准程序接口。

特征:整个过程都是在前端完成的,没有后端的参与(纯前端的操作)。

5.2、漏洞代码分析

<div id="xssd_main">
    <script>
        function domxss(){
            var str=document.getElementByla("text").value;
            document.getElementById("dom").innerHTML = "<a href=' " +str+ " '>what do you see?</a>
        }
    </script>
    <input id="text" name="text" type="text" value="" />
    <input id="button" type="button" value="click me" onclick="domxss()" />
    <div id="dom"></div>
</div>

上述代码var str = document.getElementbyId("text“).value;和<input id ="text"? ...../>意思是把我们输入 的东西(字符串)赋值给str,然后document.getElementById("dom").innerHTML = <a href='"str"' ..../>把这个字符串整合到a这个标签中的href(属性) 里在吧a标签写到dom这个标签中,最后<div id="dom"></div>执行这个标签。

5.3、实列

通过构造'><img src="#" οnclick="alert(document.cookie)" >获得cookie。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 11:59:30  更:2021-10-06 12:00:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:29:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码