反射型XSS
漏洞影响
应用程序通过Web请求获取不可信的数据,在未检验数据是否存在恶意代码的情况下,便将其传送给了Web用户,应用程序将容易受到反射型XSS攻击。
反射XSS漏洞代码
<?php
$param = $_GET['param'];
echo "<div>"."$param"."</div>";
?>
漏洞代码修复
//htmlspecialchars函数解析
//https://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
<?php
$param = htmlspecialchars($_GET['param']);
echo "<div>"."$param"."</div>";
?>
扩展
htmlspecial函数绕过场景
1、这种input场景,param='onmouseover='alert(1),htmlspecial无法生效,弹窗
<?php
$param = htmlspecialchars($_GET['param']);
?>
<input type="text" value='<?php echo $param?>'>
2、
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.2.min.js"></script>
<?php
$param = $_GET['param'];
echo "<script>
$(document).ready(function(){
$('#text').html(".htmlspecialchars($param).");
})
</script>"
?>
修复:
使用json_encode()函数进行处理,json.encode()处理之后,里面代码不会当作js代码执行
$('#text').html(".htmlspecialchars($param).");
$('#text').html(".json_encode(htmlspecialchars($param)).");`