在安全测试期间,我不断收到跨站点脚本[存储]问题 -
URL编码的POST输入文本大小设置为Largest_935538'():; 916159
输入反映在单引号之间的<script>
标记内。
受影响的文件 - change.php
经过无聊的努力,我可以找到解决的任何线索,PFB代码供您参考,有人可以指导我解决这个问题 -
<?php
include("global/user_global.php");
session_cache_limiter('nocache');
$color_array = array("blue","brown","black","high","style");
if(isset($_SESSION["lang"]))
{
if($_SESSION["lang"]=="hindi")
{
$logo = array("logo_hindi_blue.png","logo_hindi_high.png");
}
else
{
$logo = array("logo_eng_blue.png","logo_eng_high.png");
}
}
else
{
$logo = array("logo_eng_blue.png","logo_eng_high.png");
}
$referer = "$master_url";
if(isset($_REQUEST["font_action"]))
{
$theme = $_REQUEST["theme"];
$textsize = $_REQUEST["textsize"];
if ($textsize=="")
{
$_SESSION["fonts"] = "Medium";
}
else
{
$_SESSION["fonts"] = $textsize;
}
if($theme=="")
{
$_SESSION["theme"] = "style.css";
}
else
{
$_SESSION["theme"] = $theme.".css";
}
}
else
{
$theme = $_REQUEST["theme"];
$lg = $_REQUEST["lg"];
$found = in_array("$theme",$color_array);
if($found)
{
if(isset($_SESSION["theme"]))
{
$_SESSION["theme"] = $theme.".css";
$_SESSION["logo"] = $logo[$lg];
}
else
{
$_SESSION["theme"] = "style.css";
}
}
else
{
$_SESSION["theme"] = "style.css";
}
}
header("Location: $master_url");
exit();
?>
答案 0 :(得分:1)
看起来安全测试注意到您使用$_REQUEST['theme']
来选择您使用的CSS文件,这看起来像是一个XSS漏洞。但是您使用in_array("$theme",$color_array);
验证此输入,因此只能选择有效的CSS文件。这应该可以减轻漏洞,显然安全检查并没有认识到这一点。
但是,执行$_SESSION['fonts'] = $textsize;
时,您无法进行任何验证。也许这是验证错误的来源。我不确定某人通过提供错误的字体大小可以造成多大的伤害,但这取决于你如何使用这个会话变量。