您正在使用 IPV4 [18.97.9.171] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会      

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中      
[公益] 地球是我家,绿化靠大家       广州婚姻调查公司      
2025年 劳动节 003
2025年 高 考 040
2026年 元 旦 248
2026年 春 节 295
 
您现在的位置:首页 >> JSP >> 内容
本类新增
本类热门
jsp防止跨域提交数据的具体实现
内容摘要: //ArgsIsValidFilter.java过滤器代码清单:packagecom.hety.uitl;importjava.io.IOException;importjava.util.Enumeration;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.se......
//ArgsIsValidFilter.java过滤器代码清单:

packagecom.hety.uitl;

importjava.io.IOException;

importjava.util.Enumeration;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.logging.Log;

importorg.apache.commons.logging.LogFactory;

publicclassArgsIsValidFilterimplementsFilter{

privatestaticLoglog=LogFactory.getLog(ArgsIsValidFilter.class);

publicvoiddestroy(){

}

@SuppressWarnings("unchecked")

publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)arg0;

HttpServletResponseresponse=(HttpServletResponse)arg1;

Stringservername_str=request.getServerName();

StringcurrentURI=request.getRequestURI();

EnumerationheaderValues=request.getHeaders("Referer");

StringtmpHeaderValue="";

booleanisValid=true;

//指定需要跳过拦截的页面地址,如果需要新增,可直接在数组中添加。

//“建议”

String[]ignoreURIS={"/back/",

"/Info.jsp",

"/pzxx.jsp"

};

while(headerValues.hasMoreElements()){

//得到完整的路径:如“http://www.domain.com.cn:8023/front/zwgk/zwgk.jsp?id=1283”

tmpHeaderValue=(String)headerValues.nextElement();

}

if(log.isInfoEnabled()){

log.info("获得的参数url为:"+tmpHeaderValue);

log.info("系统取得的url为:"+currentURI);

}

if("".equals(tmpHeaderValue)){

isValid=false;

if(log.isInfoEnabled()){

log.info("获得的参数url为:empty");

log.info("系统取得的url为:"+currentURI);

log.info("系统提示:请求可能来自外域!");

}

}else{

if(log.isInfoEnabled()){

log.info("获得的参数长度为:"+tmpHeaderValue.length());

}

tmpHeaderValue=tmpHeaderValue.toLowerCase();

servername_str=servername_str.toLowerCase();

intlen=0;

if(tmpHeaderValue.startsWith("https://")){

len=8;

}elseif(tmpHeaderValue.startsWith("http://")){

len=7;

}

if(log.isInfoEnabled()){

log.info("截取前的字符串为:"+tmpHeaderValue);

log.info("从第"+len+"位开始截取,截取长度为:"+servername_str.length());

}

Stringtmp=tmpHeaderValue.substring(len,servername_str.length()+len);

if(log.isInfoEnabled()){

log.info("截取后的字符串为:"+tmp);

}

if(tmp.length()<servername_str.length()){//长度不够

isValid=false;

if(log.isInfoEnabled()){

log.info("截取后的字符串长度不够,请求可能来自外域!");

}

}elseif(!tmp.equals(servername_str)){//比较字符串(主机名称)是否相同

isValid=false;

if(log.isInfoEnabled()){

log.info("域名匹配失败,请求来自外域!");

}

}

}

//跳过指定需要拦截的页面地址

for(StringignoreURI:ignoreURIS){

if(currentURI.contains(ignoreURI)){

isValid=true;

if(log.isInfoEnabled()){

log.info("系统已跳过检查以下url:"+currentURI);

}

}

}

if(!isValid){

if(log.isInfoEnabled()){

log.info("系统提示信息:URL为跨域请求,即将重定向到首页。");

}

response.sendRedirect("/index.html");

}else{

arg2.doFilter(arg0,arg1);

}

}

publicvoidinit(FilterConfigarg0)throwsServletException{

}

}

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:jsp简单实现页面之间共享信息的方法

 

下一篇:jsp中利用jquery+ajax在前后台之间传递json格

发布日期:2023/12/15
手机扫二维码直达本页
发布时间:13:03:21
点  击:7
录  入:星儿
相关文章
  • 没有相关文章
Baidu
YiJiaCMS 7.5.6 build250130(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,创宇云安全提供加速防护
运行时间载入中.....
知道创宇云安全