PHP代码审计 04 XSS 反射型漏洞

本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程

PHP 代码审计博客目录

1. 简介

  1. 反射型XSS 漏洞

    它通过给别人发送带有恶意脚本代码参数的URL,当URL 地址被打开时,特有的恶意代码参数被HTML 解析、执行。
    它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。

  2. _SERVER 变量参数

    $_SERVER[‘PHP_SELF’] //直接在URL中输出执行XSS

    $_SERVER[‘HTTP_USER_AGENT’] //HTTP头中构造XSS

    $_SERVER[‘HTTP_REFERER’] //Referer头中构造XSS

    $_SERVER[‘REQUEST_URI’] //显示 URL 中的XSS内容

  3. 防御

    htmlspecialchars() 函数

    预定义的字符是:

     & (和号) 成为 &
     " (双引号) 成为 "
     ' (单引号) 成为 '
     < (小于) 成为 &lt;
     > (大于) 成为 &gt;
    

2. 漏洞演示

  1. 变量的直接输出

     <?php
     echo $_GET['xss'];
     ?>
    

    浏览器执行 http://127.0.0.1/test.php?xss=alert(123);

    输出结果为一个弹窗

    在这里插入图片描述

    浏览器执行 http://127.0.0.1/test.php?xss=alert(document.cookie);

    输出结果为 cookie 的弹窗,把 alert() 括号里的值换成 document.cookie 即可

  2. $_SERVER 变量参数

    1. $_SERVER[‘PHP_SELF’] //直接在URL中输出执行

       <?php
       echo $_SERVER['PHP_SELF'];
       ?>
      

      浏览器执行 http://127.0.0.1/test.php/xss=alert(123);

      在这里插入图片描述

    2. $_SERVER[‘HTTP_USER_AGENT’] //HTTP头中构造XSS

       <?php
       echo $_SERVER['HTTP_USER_AGENT'];
       ?>
      

      浏览器执行 http://127.0.0.1/test.php

      在这里插入图片描述

    3. $_SERVER[‘HTTP_REFERER’] //Referer头中构造

       <?php
       echo $_SERVER['HTTP_REFERER'];
       ?>
      

      浏览器执行 http://127.0.0.1/test.php

      在这里插入图片描述

    4. $_SERVER[‘REQUEST_URI’]

       <?php
       echo $_SERVER['REQUEST_URI'];
       ?>
      

      浏览器执行 http://127.0.0.1/test.php

      在这里插入图片描述

3. 防御

  1. htmlspecialchars() 函数

    预定义的字符是:

     & (和号) 成为 &amp;
     " (双引号) 成为 &quot;
     ' (单引号) 成为 &#039;
     < (小于) 成为 &lt;
     > (大于) 成为 &gt;
    

如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数

语法参数详解

htmlspecialchars(string,flags,character-set,double_encode)
语法格式中可以选择编码单引号或者双引号以及编码字符集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值