在jquery autocomplete中,我在json编码中使用htmlspecialchars()作为标题字符串。当我删除那个htmlspecialchars时,有一个XSS漏洞。但是htmlspecialchars没有转义“&”标题字符串中的'(单引号)。因为我已经通过引用以下url添加了decodeHTMLEntities。现在没有XSS漏洞而且没有转义数据aslo.But当我给出图像标签作为输入时,它直接显示图像,而不是我需要显示图像标记代码。任何人都可以帮我这个。我在给你发送我的代码
How to decode HTML entities using jQuery?
<?php
$test = htmlspecialchars( '<img src="https://google.com" ></img>',ENT_HTML401,'utf-8');
?>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<div id="asd"></div>
<script type='text/javascript'>
var decodeEntities = (function() {
// this prevents any overhead from creating the object each time
var element = document.createElement('textarea');
function decodeHTMLEntities (str) {
if(str && typeof str === 'string') {
// strip script/html tags
str = str.replace(/<img[^>]*>([\S\s]*?)<\/img>/gmi, '');
str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
element.innerHTML = str;
str = element.textContent;
element.textContent = '';
}
return str;
}
return decodeHTMLEntities;
})();
document.getElementById('asd').innerHTML = decodeEntities('<?php echo $asd;
?>');
</script>
</body>
</html>