繁体   English   中英

使用jQuery / JavaScript检测字符串是否包含javascript标签

[英]Detect if string contains javascript tags using jQuery/JavaScript

我正在尝试为当前正在开发的系统创建一个非常简单的XSS检测系统。 按目前的系统,用户可以使用邮件中嵌入的javascript提交帖子。 这是我目前拥有的:

var checkFor = "<script>";
alert(checkFor.indexOf("<script>") !== -1);

这根本不能很好地工作。 我需要编写包含数组的代码,其中包含我要搜索的术语[eg - "<script>","</script>","alert("]

关于如何使用JavaScript / jQuery实现的任何建议。

感谢您对此进行检查。 非常感谢 :)

替换字符是避免XSS的非常脆弱的方法。 (有很多方法可以在不键入字符的情况下输入< ,例如&#60;而是对数据进行HTML编码。我使用以下功能:

var encode = function (data) {
    var result = data;
    if (data) {
        result = $("<div />").html(data).text();
    }
};
var decode = function (data) {
    var result = data;
    if (data) {
        result = $("<div />").text(data).html();
    }
};

如Explosion Pills所说,如果您正在寻找跨站点的漏洞利用程序,则最好是找到一个已经编写的漏洞利用者,或者可以为您编写一个漏洞利用者的人。

无论如何,要回答这个问题,正则表达式不适合解析标记。 如果您有HTML解析器(客户端很简单,服务器要难一些),则可以将文本作为新元素的innerHTML插入,然后查看是否有任何子元素:

function mightBeMarkup(s) {
  var d = document.createElement('div');
  d.innerHTML = s;
  return !!(d.getElementsByTagName('*').length);
}

当然,文本中可能仍然存在标记,只是标记无效,因此不会创建元素。 但是,结合其他一些文本,它可能是有效的标记。

防止xss攻击的最有效方法是将所有<,>和&字符替换为&lt; &gt; &amp;

OWASP提供了一个JavaScript库。 我尚未使用它,因此无法告诉您任何有关质量的信息。 这是链接: https : //www.owasp.org/index.php/ESAPI_JavaScript_Readme

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM