XSS攻击全称跨站脚本攻击
XSS攻击的危害包括 1、盗取各类用户 帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 3、盗窃企业重要的具有商业价值的资料 4、非法转账 5、强制发送电子邮件 6、网站挂马 7、控制受害者机器向其它网站发起攻击 基于代码修改的防御 步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。 步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。 步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。 当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。 这里有些代码可以参考下public class ValidateFilePath { // 非法的字符集 private static final String[] INVALID_CHARS = new String[] { "<", ">", "\'", "\"", "&" }; // 统一替换可能造成XSS漏洞的字符为全角中文字符 private static final String[] VALID_CHARS = new String[] { "⁢", ">", "´" ,""", "&" }; /** * 验证 字符串只能包含 中文+ 英文+ 数字+ 下划线+. 不包含 ".." 符号 * @param pathStr * @return boolean */ public static boolean validateFilePath(String pathStr){ boolean validate1 = false; boolean validate2 = false; //1. 正则表达式 验证 字符串只能包含 中文+ 英文+ 数字+ 下划线+. String pattern1 = "^[a-zA-Z0-9_/.\u4e00-\u9fa5]+$"; Pattern pattern = Pattern.compile(pattern1); Matcher matcher=pattern.matcher(pathStr); validate1 = matcher.matches(); //2. 不包含 ".." 符号 if(pathStr.indexOf("..") == -1 ){ validate2 = true; } return validate1 && validate2; } /** * 去除路径中的 .. * @param pathStr * @return */ public static String deleteDoublePoint(String pathStr){ return pathStr.replace("..", ""); } /** * 替换非法字符以及危险关键字 * * @param str * @return */ public static String replaceSpecialChars(String str) { for (int j = 0; j < INVALID_CHARS.length; ++j) { if (str.indexOf(INVALID_CHARS[j]) >= 0) { str = str.replace(INVALID_CHARS[j], VALID_CHARS[j]); } } str=str.trim(); return str; }}
转载于:https://www.cnblogs.com/maochunhong/p/7681437.html
相关资源:各显卡算力对照表!