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

时间:2015-04-24 10:58:12

标签: java jsp iframe code-injection clickjacking

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

在渗透测试中, 发现如果黑客起草了一个演示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>

现在黑客能够检索应用程序中的数据。如何阻止这个?

1 个答案:

答案 0 :(得分:5)

这是点击劫持攻击:https://www.owasp.org/index.php/Clickjacking 防止它的最简单方法是添加标题&#34; X-Frame-Options&#34;有价值&#34; DENY&#34;。这可以使用filter完成。在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);
} 

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