葛胖胖的小草屋 一言不合 rm -fr /

不慎操作导致的xss

2019-11-18
cossete

阅读:

xss

业务场景

在删除商品的时候弹confirm咨询是否删除某某某商品,商品名入库时校验不当可能会引起xss漏洞

场景重现

虽然调用了htmlspecialchars ,但在js里调用的时候,还是能被解析成js

这类存储型的xss危害比较大

<?php
//入库的时候虽然调用了html编码函数
$xss = htmlspecialchars("<script>alert(11)</script>");

?>

<!DOCTYPE html>
<html>
<head>
	<title>重现xss</title>
</head>
<body>

<input type="button" name="goods" value="编辑或删除" onclick="test('<?php echo $xss;?>')" >
</body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script>
<script type="text/javascript">
	function test(name){
		var confirm = "确定要删除或编辑:"+name + "吗?";
		layer.confirm(confirm, function(){

		});
	}
</script>
</html>

解决方法

  1. 在数据入库的时候进行严格的判断,配合strip_tags一起使用
  2. waf防火墙,无论GET还是POST都要严格过滤

Comments

Content