我们如何在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>
现在黑客能够检索应用程序中的数据。如何阻止这个?
答案 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