Java防跨域攻击解决方案

Posted ycyk_168

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java防跨域攻击解决方案相关的知识,希望对你有一定的参考价值。

思路: 判断referer里的地址是否和当前的地址一致,如果不一致则说明是跨域攻击的,否则不是  
/**
 * 验证请求的合法性,防止跨域攻击
 *
 * @param request
 * @return
 */
@SuppressWarnings("rawtypes")
publicstatic boolean validateRequest(HttpServletRequest request) 
    String referer = "";
    booleanreferer_sign = true;// true 站内提交,验证通过 //false 站外提交,验证失败
    Enumeration headerValues = request.getHeaders("referer");
    while(headerValues.hasMoreElements()) 
        referer = (String) headerValues.nextElement();
    
    // 判断是否存在请求页面
    if(StringUtils.isBlank(referer)) referer_sign = false;
    else
        // 判断请求页面和getRequestURI是否相同
        String servername_str = request.getServerName();
        if(StringUtils.isNotBlank(servername_str)) 
            intindex = 0;
            if(StringUtils.indexOf(referer, "https://") == 0) 
                index = 8;
            
            elseif (StringUtils.indexOf(referer, "http://") == 0) 
                index = 7;
            
            if(referer.length() - index < servername_str.length()) // 长度不够
                referer_sign = false;
            
            else // 比较字符串(主机名称)是否相同
                String referer_str = referer.substring(index, index + servername_str.length());
                if(!servername_str.equalsIgnoreCase(referer_str)) referer_sign = false;
            
        
        elsereferer_sign = false;
    
    returnreferer_sign;

转自: http://www.mspring.org/post/241.html

以上是关于Java防跨域攻击解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Anti XSS 防跨站脚本攻击库

五品达通用权限系统__pd-tools-xxs(防跨站脚本攻击)

五品达通用权限系统__pd-tools-xxs(防跨站脚本攻击)

五品达通用权限系统__pd-tools-xxs(防跨站脚本攻击)

Pbootcms网站防黑防跨站的经验分享

Spring Security---跨域访问和跨站攻击问题详解