Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php XSS永久性跨站点脚本漏洞?_Php_Xss - Fatal编程技术网

Php XSS永久性跨站点脚本漏洞?

Php XSS永久性跨站点脚本漏洞?,php,xss,Php,Xss,我正在运行针对我的PHP代码的漏洞软件,它痴迷于这个页面,这是一个更新购物车页面。它相当直截了当,只是检查优惠券代码,我认为相当锁定,但它声称这是一个XSS永久性跨站点脚本漏洞 有谁能告诉我它是不是,我已经看了这么长时间了,改变了一些东西,但没有成功,我现在已经变成了代码盲,看不出我是否遗漏了什么 干杯 <?php include_once ('db_access.php'); require_once ('htmlpurifier.standalone.php'); $config =

我正在运行针对我的PHP代码的漏洞软件,它痴迷于这个页面,这是一个更新购物车页面。它相当直截了当,只是检查优惠券代码,我认为相当锁定,但它声称这是一个XSS永久性跨站点脚本漏洞

有谁能告诉我它是不是,我已经看了这么长时间了,改变了一些东西,但没有成功,我现在已经变成了代码盲,看不出我是否遗漏了什么

干杯

<?php
include_once ('db_access.php');
require_once ('htmlpurifier.standalone.php');

$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.DefinitionImpl', null);     // Disable caching of HTML Purifier

$purifier = new HTMLPurifier($config);

$coupon_data = get_coupon();                    // Get Coupon details   

session_start();

unset ($_SESSION['coupon']);

if (isset($_SESSION['cart'])) {

foreach($_SESSION['cart'] as $id => $qty)
{

$clean_id = $purifier->purify($_POST[$id]);                                 // id passed from form

    if($clean_id <= '0')        // Down to Quantity zero so remove from cart
    {
    unset($_SESSION['cart'][$id]);          // Clear Cart
    unset($_SESSION['coupon']);             // Clear Coupon
    unset($_SESSION['msg_'.$id]);          // Clear Custom Message      

    } else {

        if (is_numeric($clean_id)) {

        $coupon = $purifier->purify($_POST['coupon']);      // Coupon code as entered

        $_SESSION['cart'][$id] = $clean_id;                 // Quantity

        $coupon = strtoupper($coupon);                      // Coupon Code from form

        $known_disc_coupon = strtoupper($coupon_data['0']['coupon_name']);          // Discount coupon
        $known_del_coupon = strtoupper($coupon_data['1']['coupon_name']);           // Delivery coupon

        if (( $coupon_data['0']['enabled'] == '1') && ($coupon == $known_disc_coupon)) {                ## Coupon for discount is enabled
        $_SESSION['coupon'] = 'DISCOUNT';
        }

        if (( $coupon_data['1']['enabled'] == '1') && ($coupon == $known_del_coupon)) {                 ## Coupon for delivery is enabled
        $_SESSION['coupon'] = 'DELIVERY';
        }   
        }
    }
}
}
if (!empty($_SERVER['HTTP_REFERER'])) {
$mysource = $_SERVER['HTTP_REFERER']; 
header('Location:' . $mysource);
exit;
} else {
header('Location:index.php');
exit;
}
?>


不要使用HTML净化器。在这种情况下,这是没有意义的。如果您需要HTML,您只需要使用HTML净化器。否则,将获取的数据视为文本并从中转换。你的
$clean\u id
一点也不干净。我认为这与你使用
$\u服务器['HTTP\u REFERER']
的方式有关。它与XSS无关,但它仍然是一个未经验证的重定向(在某些情况下可能是一个漏洞)。该软件可能不够聪明,无法理解这一点,当它看到
$\u POST
:)时,它会发疯。不要使用这样的软件,试着了解攻击者如何利用您的appAh ok。。。虽然我是从这个开始的$clean_id=(filter_var($_POST[$id],filter_SANITIZE_NUMBER_INT));#数量