如何在java应用程序中防止帧注入(clickjacking)?

Har*_*ngh 4 java iframe jsp code-injection clickjacking

我们如何在Java应用程序中阻止帧注入?

就像在Penetration测试中一样,发现如果黑客起草了一个演示html页面,并且在该页面内他使用了iframe,它具有工作应用程序的URL,他/她可以通过该URL /请求查看数据(在iframe中创建).

假设这是黑客文件test.html:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"   \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head><body>
<iframe id="inner" src="http://hostname:8080/Application_Name/ABC/DEF/SomePage.jsp?ABC=QWERTYL&XYZ=1&CDE=24" width="600" height="400" scrolling="yes">

</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在,黑客能够检索应用程序中的数据.怎么阻止这个?

小智 5

这是点击劫持攻击:https ://www.owasp.org/index.php/Clickjacking防止它的最简单方法是添加标题为"X-Frame-Options"的值为"DENY".这可以使用过滤器完成.在web.xml中注册它并使用如下代码:

@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException,
            ServletException {
    HttpServletResponse response = (HttpServletResponse) resp;
    response.addHeader("X-Frame-Options", "DENY");    
    chain.doFilter(req, resp);
} 
Run Code Online (Sandbox Code Playgroud)

所有现代浏览器都支持此标题,但为了保护使用旧版浏览器的用户,您还需要在UI中使用防御性javascript.更多细节:https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet