[英]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的非常脆弱的方法。 (有很多方法可以在不键入字符的情况下输入<
,例如<
而是对数据进行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攻击的最有效方法是将所有<,>和&字符替换为<
, >
和&
。
OWASP提供了一个JavaScript库。 我尚未使用它,因此无法告诉您任何有关质量的信息。 这是链接: https : //www.owasp.org/index.php/ESAPI_JavaScript_Readme
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.