XSS的关键之列表

[code]
//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"}

};
[/code]

[code]
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();
}
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS (Cross-Site Scripting) 攻击是一种常见的网络安全漏洞,它允许攻击者通过将恶意脚本注入到网页浏览器中来控制用户的计算机并获取敏感信息。这种恶意脚本通常包含在网页上显示的内容中,并在用户访问该网页时被执行。 在 XSS 攻击中,`payload` 指的是攻击者精心设计的、用于触发特定行为或泄露敏感信息的恶意数据串。这个数据串通常被编码或变形以避免被网站的安全机制拦截,然后作为输入插入到网页中。 例如,在基于表单的数据提交场景中,`<script>alert('我是恶意代码');</script>` 可能会被当作正常的 HTML 或 JavaScript 字符串传递给服务器端。由于前端输入处理不足,这类字符串会原封不动地显示在页面上,当用户访问包含该 `payload` 的页面时,恶意脚本就会执行,导致如弹窗警告、数据泄漏等不良后果。 防止 XSS 攻击的关键在于对所有用户提交的数据进行严格的验证和清理。这包括但不限于: 1. **内容过滤**:使用白名单技术只接受预定义的安全字符集内的字符。 2. **转义特殊字符**:对于用户输入的所有文本内容,都应使用适当的转义序列(如 `<` 转换为 `<`),以防止它们作为 HTML 标签或脚本执行。 3. **输入验证**:确保输入的数据格式满足预期用途的要求,比如检查电子邮件地址是否有效,URL 是否指向可信域名等。 4. **使用安全库函数**:利用编程语言提供的安全处理函数帮助自动过滤和转义数据。 5. **避免信任所有的用户输入**:永远不要假设用户输入总是安全的,即使来自注册用户或有权限的内部人员也是如此。 通过实施这些策略,可以显著降低网站遭受 XSS 攻击的风险,保护用户数据的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值