【发布时间】:2010-09-26 20:34:14
【问题描述】:
我想允许已登录的用户通过 IFrame 查看任何第 3 方内容。
类似于允许 Gmail 用户在 IFrame 中查看他们想要的任何网络日历。
允许用户设置 IFrame Src Url 是否存在安全问题?
我将面临哪些安全问题?
欢迎任何其他需要了解的使用 IFrame 的提示。
谢谢
拉斐尔
【问题讨论】:
标签: javascript html iframe security
我想允许已登录的用户通过 IFrame 查看任何第 3 方内容。
类似于允许 Gmail 用户在 IFrame 中查看他们想要的任何网络日历。
允许用户设置 IFrame Src Url 是否存在安全问题?
我将面临哪些安全问题?
欢迎任何其他需要了解的使用 IFrame 的提示。
谢谢
拉斐尔
【问题讨论】:
标签: javascript html iframe security
你害怕想要伤害你的用户吗?那么答案是,你无能为力。他们可以随意控制浏览器中的源。你必须做你的安全服务器端。
但是,如果您想保护您的客户免受通过 iframe 加载的 3rd 方网站上的邮寄代码的影响,答案是: iframe 相当安全。现在 xss/same-source-origin 政策非常好。
当然,这样的事情总是有风险的。 您不必害怕 iframe 中的内容。 我宁愿推荐的是验证内容或 src 标签。 让它成为一个有效的网址,然后你应该没问题。
iframe 中的页面唯一可能做的就是将您的页面重定向到错误的站点。 (因为 document.location 属性在来自不同来源的 iframe 中是可操作和可读的)。有一些方法可以防止这种情况发生,但它们并不可靠。
您可以将外部网站的源代码加载到您的服务器,并将其设置为外部站点的基本 href 属性,这样一切都会正确加载,然后您就可以检查/操作文档。但如果你想维护高级的东西,比如 javascript 等,那就相当复杂了。
总结一下:该网站不会真正伤害您。但用户。但是如果用户指定了一个错误的站点,那么这确实是她/他的问题....
【讨论】:
扩展乔所说的话:
该网站不会真正伤害您。但用户。
这是中心点:只要选择的 src 只被输入它的用户使用和查看,没关系。用户可以做的所有事情都具有与在另一个浏览器选项卡中打开 src 相同的效果。你不应该介意这一点。
如果其他用户也可以看到 src,情况就会不同。起初这很明显,但想象一下:src 出于某种原因缓存在 URL 的哈希中,因此您的页面使用类似的 URL
http://www.myapp.com/view#http://www.thesrcpage.com
您应该避免这种情况,因为恶意用户可能会使用您的页面作为代理,为他们的受害者提供一个明显指向您的网站但随后打开另一个恶意网站的链接。
潜在的受害者可能会打开链接,因为他们信任您。如果链接伤害了他们,他们会责备你。
【讨论】:
确保它是一个真实的 URL,而不是像 javascript:doSomethingNasty(); 这样的 URL,这样你就安全了。如果页面来自不同的域,则它与页面隔离,彼此都无法访问。
【讨论】: