我需要拒绝来自我的应用程序的点击劫持威胁。它的 java 应用程序 & 部署在 jboss 5.1 服务器中。正如许多地方建议的那样,要摆脱这种情况,需要避免在 iframe 中加载应用程序。为此,我尝试将标头添加到 http 响应中。我在 web xml 中添加了过滤器并将 X-FRAME-OPTIONS 标头设置为 DENY。我将 URLPATTERN 添加为 /*。我用 iframe 创建了 html 并添加了 src url 来测试。应用程序作为服务器的根目录加载,例如:http://localhost:8080。它没有应用此根 URL 的标头。但它适用于带有任何其他修改 url 的基本 url。
前任:
- http://localhost:8080 - 不应用标头
- http://localhost:8080/login.do - 应用标头
是否有任何其他配置可以在 jboss5.1 中获取根 url 的响应标头?
这是更改
web.xml
<filter>
<filter-name>ClickjackPreventionFilter</filter-name>
<filter-class>com.base.presentation.filters.ClickJackingPreventionFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ClickjackPreventionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
点击JackingPreventionFilter.java
import java.io.IOException;
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.HttpServletResponse;
public class ClickJackingPreventionFilter implements Filter{
private String mode = "DENY";
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse)response;
res.addHeader("X-FRAME-OPTIONS", mode );
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String configMode = filterConfig.getInitParameter("mode");
if ( configMode != null ) {
mode = configMode;
}
}
}