我有一个https网络应用程序,我们在iframe中显示外部内容(完全可由用户自定义)
由于混合内容被许多浏览器阻止,我对HTTP内容执行以下操作:
iframe链接到我自己的JSP并将请求的url作为参数发送。然后,JSP使用url创建输入流并返回响应。
BufferedReader reader = null;
URL url;
String strUrl = (String) request.getParameter("url");
try {
url = new URL(strUrl);
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
for (String line; (line = reader.readLine()) != null;) {
out.println(line);
}
} catch (Exception e) {
log.warn("Error on URL " + strUrl);
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException ignore) {
}
}
这很有效。
问题是:
有人可以解释这里的安全问题,这是我想要做的吗? (从技术上讲,我可以说只支持HTTPS网址...)。
谢谢!
答案 0 :(得分:1)
是的,这肯定是一个安全问题。您创建的内容称为“open redirect”,它用于网络钓鱼攻击。
攻击者可能滥用用户对您网站的信任(使用您的SSL证书进行签名和加密的通信),以将其重定向到恶意网站。
即使他们可能无法在您的网站上控制此JSP的使用,他们也可以在电子邮件或网站评论中使用它。有关详细信息,请参阅this question。
您可以通过在服务器端维护要从HTTP转换为HTTPS的站点列表来解决此问题,并通过索引或关键字引用它们,例如:
https://myserver/proxy.jsp?url=site1