//this field are used tp escape XSS script attach
//get all the html 4 event from http://www.w3schools.com/Html/html_eventattributes.asp
private static final String[][] XSS_CHARS_ESCAPE = {
//Window Events
{"onload", "on_load"},
{"onunload", "on_unload"},
//Form Element Events
{"onchange", "on_change"},
{"onsubmit", "on_submit"},
{"onreset", "on_reset"},
{"onselect", "on_select"},
{"onblur", "on_blur"},
{"onfocus", "on_focus"},
//Keyboard Events
{"onkeydown", "on_keydown"},
{"onkeypress", "on_keypress"},
{"onkeyup", "on_keyup"},
//Mouse Events
{"onclick", "on_click"},
{"ondblclick", "on_dblclick"},
{"onmousedown", "on_mousedown"},
{"onmousemove", "on_mousemove"},
{"onmouseout", "on_mouseout"},
{"onmouseover", "on_mouseover"},
{"onmouseup", "on_mouseup"},
//html 5 event attribute
//from http://www.w3schools.com/tags/html5_ref_eventattributes.asp
{"onabort", "on_abort"},
{"onbeforeunload", "on_beforeunload"},
{"oncontextmenu", "on_contextmenu"},
{"ondrag", "on_drag"},
{"ondragend", "on_dragend"},
{"ondragenter", "on_dragenter"},
{"ondragleave", "on_dragleave"},
{"ondragover", "on_dragover"},
{"ondragstart", "on_dragstart"},
{"ondrop", "on_drop"},
{"onerror", "on_error"},
{"onmessage", "on_message"},
{"onmousewheel", "on_mousewheel"},
{"onresize", "on_resize"},
{"onscroll", "on_scroll"},
{"onunload", "on_unload"},
//JS header
{"javascript:", "java_script:"},
{"jscript:", "j_script:"},
{"vbscript:", "vb_script:"},
{"<script>", "<script>"},
{"</script>", "</script>"},
//IE only event
{"onactivate","onactivate"},
{"onafterprint","onafterprint"},
{"onafterupdate","onafterupdate"},
{"onbeforeactivate","onbeforeactivate"},
{"onbeforecopy","onbeforecopy"},
{"onbeforecut","onbeforecut"},
{"onbeforedeactivate","onbeforedeactivate"},
{"onbeforeeditfocus","onbeforeeditfocus"},
{"onbeforepaste","onbeforepaste"},
{"onbeforeprint","onbeforeprint"},
{"onbeforeupdate","onbeforeupdate"},
{"onbounce","onbounce"},
{"oncontrolselect","oncontrolselect"},
{"oncopy","oncopy"},
{"oncut","oncut"},
{"ondataavailable","ondataavailable"},
{"ondatasetchanged","ondatasetchanged"},
{"ondeactivate","ondeactivate"},
{"onerrorupdate","onerrorupdate"},
{"onfilterchange","onfilterchange"},
{"onfinish","onfinish"},
{"onhelp","onhelp"},
{"onlayoutcomplete","onlayoutcomplete"},
{"onlosecapture","onlosecapture"},
{"onmouseenter","onmouseenter"},
{"onmouseleave","onmouseleave"},
{"onmove","onmove"},
{"onmoveend","onmoveend"},
{"onmovestart","onmovestart"},
{"onpaste","onpaste"},
{"onpropertychange","onpropertychange"},
{"onreadystatechanged","onreadystatechanged"},
{"onresizeend","onresizeend"},
{"onresizestart","onresizestart"},
{"onrowenter","onrowenter"},
{"onrowexit","onrowexit"},
{"onrowsdelete","onrowsdelete"},
{"onrowsinserted","onrowsinserted"},
{"onstart","onstart"},
{"onstop","onstop"},
{"ontimeerror","ontimeerror"}
};
private static String replaceIgnoreSearchCase(String text, String searchString, String replacement) {
if (StringUtils.isEmpty(text) || StringUtils.isEmpty(searchString) || replacement == null) {
return text;
}
searchString = searchString.toUpperCase();
final String textUperCase = text.toUpperCase();
int start = 0;
int end = textUperCase.indexOf(searchString, start);
if (end == -1) {
return text;
}
int replLength = searchString.length();
int increase = replacement.length() - replLength;
increase = (increase < 0 ? 0 : increase);
increase *= 16;
StringBuffer buf = new StringBuffer(text.length() + increase);
while (end != -1) {
buf.append(text.substring(start, end)).append(replacement);
start = end + replLength;
end = textUperCase.indexOf(searchString, start);
}
buf.append(text.substring(start));
return buf.toString();
}
分享到:
相关推荐
首先,理解XSS攻击的本质是关键。XSS攻击是通过在网页中注入可执行的脚本,当用户访问被注入脚本的页面时,这些脚本会在用户的浏览器环境中运行,从而可能执行攻击者设计的各种操作。PDF文件中的XSS攻击则是在PDF...
防止存储型XSS的关键在于对用户提交的内容进行严格的验证和转义处理。 3. DOM型XSS(DOM-Based XSS): 这种XSS与前两种不同,它不依赖服务器的响应,而是利用JavaScript的DOM(Document Object Model)解析漏洞。...
在Java中,处理XSS攻击通常涉及以下几个关键步骤和策略: 1. 输入验证:首先,对所有用户输入进行严格的验证,确保其符合预期的格式。例如,如果一个字段只应接受数字,那么就应当拒绝任何包含非数字字符的输入。...
防范XSS攻击的关键在于正确地处理和验证用户输入,包括: - 对用户提交的数据进行转义或过滤,确保不会插入可执行的脚本。 - 使用HTTP头部的Content-Security-Policy(CSP)来限制浏览器只执行指定来源的脚本。 - ...
XSS(Cross-site scripting)漏洞是现代Web应用中常见的安全问题,主要表现为攻击者通过注入恶意脚本到网页中,...总之,理解和预防XSS漏洞是Web开发中的关键环节,需要持续关注最新的攻击手段,并采取有效的防护措施。
理解XSS攻击的原理和类型,结合实际应用,选择合适的防护策略,是保障Web应用安全的关键。通过Web.xml配置过滤器是其中一种简单实用的方法,但全面的安全措施应包括多个方面,以确保用户的浏览体验不受威胁。
源码通常包括以下几个关键部分: 1. 用户输入处理:在任何允许用户输入的系统中,都需要对输入进行严格的过滤和转义,以防止恶意脚本被执行。源码中可能包含对用户提交数据的验证函数,如检查特殊字符、禁止HTML...
Web漏洞中的XSS(Cross Site Scripting)攻击是一种常见的安全问题,主要针对Web应用程序。XSS允许攻击者在用户浏览器中注入恶意脚本,从而...在实际工作中,不断更新知识,关注最新的安全动态,是防止XSS攻击的关键。
以下是一些关于Java防止XSS攻击的关键知识点: 1. **使用Filter拦截器**: 在Java Web应用中,可以使用Servlet Filter来拦截和处理HTTP请求。Filter可以在请求到达目标Servlet之前对其进行预处理,检查并清理可能...
无论是在服务器端还是在客户端,对所有输入进行验证和清洗,保持软件更新,以及遵循最佳安全实践,都是防御XSS攻击的关键。最后,作为用户,提高安全意识,不随意点击不明链接或下载来源不明的文件,也是保护自己免...
5. 漏洞利用技巧:理解如何构造有效的XSS payload,如使用`<script>`标签、事件处理程序、CSS注入等,是提高安全技能的关键。靶场的各个级别可能会逐步引导你掌握这些技巧。 6. 安全意识:通过参与这样的靶场,用户...
在"压缩包子文件的文件名称列表"中,"xss-filters-master"可能是该项目的源代码仓库主分支,包含项目的所有源文件、测试用例、文档以及可能的示例。开发者可以下载这个压缩包,解压后进行本地开发和调试,了解过滤器...
在Java代码中,我们看到了一个关键类XssStrUtils,它提供了一个静态方法replaceHtmlCode用于处理字符串中的危险代码。在该方法中,首先对传入的content参数进行非空检查。接着,定义了一系列的事件关键词数组...
SQL注入和跨站脚本(XSS)是两种常见的网络安全漏洞,它们对网站的数据安全性和用户隐私构成严重威胁。在本文中,我们将深入探讨这两种漏洞的原理、危害以及如何通过核心代码修复这些问题。 首先,SQL注入是攻击者...
**XSS Encode 知识详解** ...综上所述,XSS Encode是防止XSS攻击的关键技术,通过正确编码和防御策略,可以显著提高网站的安全性。同时,理解和使用Xsser等工具,有助于更好地进行安全测试和漏洞排查。
XSS(跨站脚本攻击)和...总的来说,理解XSS和RFI攻击的本质,采取有效的防御措施,并利用专业扫描工具进行定期检测,是保障Web应用安全的关键。对于开发团队来说,安全编码、定期审计和更新安全策略是不可或缺的环节。
### XSS跨站总结 #### 一、XSS跨站攻击概述 XSS(Cross-Site Scripting,...总之,XSS攻击是Web应用安全领域的重要问题之一,开发者需要不断学习和实践相关的安全技术,才能有效地保护自己的应用免受此类攻击的影响。
在分析源码时,我们需要关注以下几个关键点: 1. **数据验证与过滤**:确保所有的用户输入都经过严格的验证和过滤,以防止恶意脚本的注入。 2. **编码与解码**:正确使用编码和解码函数,如encodeURIComponent()和...
3. **移动/云前项收费**:随着业务向移动端和云端迁移,XSS攻击的风险也随之转移,这对安全策略提出了更高要求。 4. **战略必须拥有安全保障**:在互联网公司的业务规划中,安全已不再是可有可无的选项,而是战略...