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