1、web.xml配置
<filter>
<description>过滤是否登陆</description>
<filter-name>encodingFilter</filter-name>
<filter-class>com.stxx.manager.filter.EncodingFilter</filter-class>
<init-param>
<description>配置白名单</description>
<param-name>noCheck</param-name>
<param-value>
/login.jsp,
/register.jsp
</param-value>
</init-param>
<init-param>
<description>过滤不成功转向地址</description>
<param-name>redirectPath</param-name>
<param-value>/login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
2、创建过滤器
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
/**
* 登陆过滤 配置白名单、黑名单
* @author zxf
*
*/
public class EncodingFilter implements Filter {
Logger log = Logger.getLogger(EncodingFilter.class);
private static final String NO_CHECK = "noCheck";
private static final String REDIRECT_PATH = "redirectPath";
private List<String> noCheckList = new ArrayList<String>();
private String redirectPath = "/login.jsp";
public void init(FilterConfig init) throws ServletException {
log.info("初始化filter....");
String noChecks = init.getInitParameter(NO_CHECK);
if(StringUtils.isNotBlank(noChecks)){
if(StringUtils.indexOf(noChecks,",")!=-1){
for(String no : noChecks.split(",")){
noCheckList.add(StringUtils.trimToEmpty(no));
}
}else{
noCheckList.add(noChecks);
}
}
String path = init.getInitParameter(REDIRECT_PATH);
if(StringUtils.isNotBlank(path)){
redirectPath = path;
}
}
private boolean check(String path) {
if (noCheckList == null || noCheckList.size() <= 0)
return false;
for (String s : noCheckList) {
if (path.indexOf(s) > -1) {
return true;
}
}
return false;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
log.info("被filter过滤.......");
String contextpath = request.getContextPath();
if("/".equals(contextpath)){contextpath="";}
if(check(request.getRequestURI())){
log.info("白名单");
arg2.doFilter(request, response);
}else{
log.info("黑名单");
response.sendRedirect(response.encodeURL(contextpath+redirectPath));
}
}
public void destroy() {
log.info("销毁filter....");
}
}
分享到:
相关推荐
同时,可以通过`web.xml`配置文件来声明和配置过滤器,指定其过滤哪些请求以及过滤规则。 6. **安全考虑**:这样的过滤器设计是为了提高系统安全性,防止未经授权的访问。然而,为了确保有效性和安全性,需要考虑...
这可能涉及到维护一个白名单或黑名单,并在过滤器中进行比较。 5. **会话和权限管理**:如果需要基于用户角色的访问控制,需要获取用户的会话信息,并检查他们是否有足够的权限访问请求的资源。 6. **日志和异常...
2. **IP白名单与黑名单**:除了允许列表,还可以设置禁止列表,或者结合两者,以更灵活地控制访问。 3. **代理服务器**:如果应用部署在代理服务器后面,需要处理X-Forwarded-For头来获取客户端真实IP。 4. **多环境...
4. **白名单策略**:只允许特定字符或字符集,而非黑名单策略(即阻止某些字符)。这可以更有效地控制输入,降低漏网之鱼的可能性。 5. **长度限制**:设置参数的最大长度,防止过长的输入导致内存溢出或其他安全...
3. **Java Web过滤器(Filter)**:在Java Web应用中,Filter是Servlet规范的一部分,用于拦截HTTP请求和响应。我们可以通过自定义Filter实现IP过滤,如在`doFilter()`方法中检查请求的IP地址。 4. **Web应用配置**...
4. **过滤策略**:除了简单的字符过滤,还可以使用更复杂的策略,如转义特殊字符、白名单过滤(只允许特定字符或字符串)、黑名单过滤(阻止特定字符或字符串)等。选择哪种策略取决于具体应用场景的安全需求和性能...
如果将过滤器与白名单方法一起使用,它将为XSS攻击的网站提供比使用黑名单方法的现有过滤器更严格的安全措施。 同时支持DOM和SAX解析器。XssPreventer 使用apache-common-lang3库防止XSS攻击。 只需按如下所示转换...
可以通过配置 DWR 的安全选项来限制访问权限,如使用白名单或者 IP 黑名单。 通过以上步骤,Spring 与 DWR 的整合就可以实现高效且安全的 AJAX 通信。这使得前端界面可以实时更新,提高用户体验,同时利用 Spring ...
项目可能使用了Spring Security或自定义的过滤器实现此功能,根据预定义的IP白名单或黑名单来控制访问权限。 2. **请求拦截**:在Spring Boot中,我们可以使用AOP(面向切面编程)来实现请求拦截。AOP允许我们在不...