Javascript XSS 验证
Javascript XSS Validation
我有一个 javascript / jquery 搜索代码,我测试了插入带有警报的脚本标签,我发现我的搜索容易受到 XSS 攻击。请问有没有过滤搜索的方法?
这是我的代码。
$('#search').keyup(function(e){
if($.trim($(this).val()) != ''){
$.get("php/api.php",{"function":"Searching","search": $(this).val() },function(e){
$('#search-result').html(e);
});
$('#search-result').show();
if(e.which == 13) {
location.href = 'search.php?result='+$(this).val();
}
}else{
$('#search-result').html("");
}
});
要从用户输入中删除脚本标签,您可以使用以下函数
function stripScripts(s) {
var div = document.createElement('div');
div.innerHTML = s;
var scripts = div.getElementsByTagName('script');
var i = scripts.length;
while (i--) {
scripts[i].parentNode.removeChild(scripts[i]);
}
return div.innerHTML;
}
stripScripts('<span><script type="text/javascript">alert(\'foo\');<\/script><\/span>')
但这只能防止特定类型的 XSS。查看此 link 了解更多详情。
我有一个 javascript / jquery 搜索代码,我测试了插入带有警报的脚本标签,我发现我的搜索容易受到 XSS 攻击。请问有没有过滤搜索的方法?
这是我的代码。
$('#search').keyup(function(e){
if($.trim($(this).val()) != ''){
$.get("php/api.php",{"function":"Searching","search": $(this).val() },function(e){
$('#search-result').html(e);
});
$('#search-result').show();
if(e.which == 13) {
location.href = 'search.php?result='+$(this).val();
}
}else{
$('#search-result').html("");
}
});
要从用户输入中删除脚本标签,您可以使用以下函数
function stripScripts(s) {
var div = document.createElement('div');
div.innerHTML = s;
var scripts = div.getElementsByTagName('script');
var i = scripts.length;
while (i--) {
scripts[i].parentNode.removeChild(scripts[i]);
}
return div.innerHTML;
}
stripScripts('<span><script type="text/javascript">alert(\'foo\');<\/script><\/span>')
但这只能防止特定类型的 XSS。查看此 link 了解更多详情。