JavaScript - 过滤'<'是否足以在显示之前保护HTML?

时间:2015-12-25 00:33:20

标签: javascript security html-injections

在JavaScript中,如果我们过滤掉所有'小于'('<')字符然后将结果显示为HTML,是否有任何已知的字符串可能导致恶作剧?

ParseQuery
    .getQuery("userMessage")
    .whereEqualTo("town_names", "New York")
    .getFirstInBackground(new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject object, ParseException e) {
            if (e == null) {
                retrievedText = object.getString("info");
            } else {
                retrievedText = "No information.";
            }
        }
    });

This question特别针对消毒ID。我正在寻找一般的HTML字符串。理想的答案是一个字符串的最简单的工作示例,它会注入代码或其他潜在的危险元素。

1 个答案:

答案 0 :(得分:0)

这还不够......您需要对嵌入页面中的任何HTML进行HTML编码,以便最终用户可以编辑。否则,你需要消毒它。

您可以在Owasp site

了解更多信息 编辑:回应你的评论,我不是百分百肯定。在某些情况下,如果你不小心,这听起来像是双重编码。

https://www.owasp.org/index.php/Double_Encoding

例如,该页面中的此字符串应该显示隐藏“&lt;”的漏洞利用字符:

string

此外,字符“&lt;”可以在HTML中以很多不同的方式编码,如下表所示:

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Character_escape_sequences

所以对我来说,这是需要注意的事情 - 事实上可能存在难以理解的可利用案例,但可能会让你开放。

但是回到你原来的问题 - 你能给我一个HTML的例子,它呈现为不包含“&lt;”的HTML字符?我试图了解您希望用户能够使用哪种HTML,这将是一个“id”。

此外,如果您的网站很小,如果您愿意重写其中的部分内容(特别是您在网页中使用javascript的方式),那么您可以考虑使用Content Security Policies来保护您的用户免受XSS攻击。这适用于大多数现代浏览器,如果您采取此步骤,可以保护您的许多用户免受XSS攻击。