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 了解更多详情。