#1. DOS/DDOS
DOS(Denial of Service)拒绝服务攻击,通常利用协议或主机漏洞进行的点对点攻击
DDOS(Distributed Denial of Service) 分布式拒绝服务攻击,通常使用多个僵尸主机进行大规模多对一攻击
上面两者目的都是使计算机或网络无法提供正常服务
#2. XSS
XSS(Cross Site Script)跨站脚本攻击,是指攻击者通过服务器或其他方式把恶意代码植入到用户使用的页面,盗取用户信息
处理: 可进行特殊字符过滤,如把html中特殊符号转义 如>转><转<
#3. 会话定置
窃取或操纵客户会话和 cookie,模仿合法用户,从而以该用户身份查看或变更用户记录
处理: 可进行cookie禁用或者登陆后重新生成sessionid,不使用浏览器带过来的sessionid
HttpSession sessionOld = ServletActionContext.getRequest().getSession(); //首先将原session中的数据转移至一临时map中 Map<String,Object> tempMap = new HashMap(); Enumeration<String> sessionNames = sessionOld.getAttributeNames(); while(sessionNames.hasMoreElements()){ String sessionName = sessionNames.nextElement(); tempMap.put(sessionName, sessionOld.getAttribute(sessionName)); } sessionOld.invalidate(); HttpSession sessionNew = ServletActionContext.getRequest().getSession(true); for(Map.Entry<String, Object> entry : tempMap.entrySet()){ sessionNew.setAttribute(entry.getKey(), entry.getValue()); }
备注: 如果浏览器禁用cookie,则需使用servlet 中的 response.encodeRedirectURL(url) 或response.encodeURL(url)对url进行处理,如需要则http://abc/ac;jsessionid=xxx,否则直接返回url,前者不对url本身进行处理,后者会对url本身进行处理
#4. SQL注入如果重新生成sessionid,首先使用request.getSession().inValidation()使session失效,然后使用request.getSession(true)/getSession()/getSession(false)三种方法,前两者判断如有session则使用,没有则生成新session,后者判断有则使用,没有则返回null,如使用strut2,则需要把session里的东西循环到新的map中,否则会出错
在web表单递交或输入域名或页面请求查询字符串中使用数据库查询语句进行恶意数据库的操作
处理: 1.使用preparedStatment 代替 statment
2.使用变量绑定
3.使用正则表达式过滤SQL
4.对参数进行特殊字符过滤