PHP代码审计-XSS

反射型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)).");`
原文地址:https://www.cnblogs.com/renhaoblog/p/14325177.html