允许在UIWebView中加载http网站,而不允许在应用范围内任意加载

时间:2017-08-07 08:17:31

标签: ios uiwebview

作为我的应用程序的一部分,我希望用户能够使用UIWebViews共享和打开链接。当然,这不仅适用于http链接,因为iOS默认拒绝打开不安全的连接。我知道我可以通过向PList添加NSAllowsArbitraryLoads = true来绕过这一点,但通常不建议这样做,因为它会打开整个应用程序以防漏洞。但是,对此提出建议的人通常不会提供任何其他建议。我遇到的另一种选择是将特定域列入白名单。这对我没有帮助,因为我希望用户能够共享他们想要的任何网站。

有没有办法绕过这个安全措施只针对UIWebViewControllers的特定实例?或者这会破坏目的吗?

3 个答案:

答案 0 :(得分:0)

您的UIWebViewControllers会请求哪种网址?我想你可以在UIWebView中请求某个网址时添加白名单。

答案 1 :(得分:0)

实际上,我不确定它是否会破坏禁用NSAllowsArbitaryLoads的目的。从理论上讲,最好只允许通过特定的UIWebViews和应用程序中的其他地方进行连接。

输入的白名单网址可以正常工作,但如果您允许用户输入自己列入白名单的网址,则会再次提出问题为什么要引入额外的步骤,您也可以首先启用任意加载。

要么点击并暴露自己,要么遵守Apple的推荐。我认为很多应用程序允许任意加载,但这不是很好的做法。查看安全性principle of least privilege。它还取决于您希望应用程序执行的操作 - 是否有合法的案例来访问非https网站等。

答案 2 :(得分:0)

虽然不允许UIWebView打开http网站(没有明确绕过限制),看起来像SFSafariViewController。它们不完全相同 - 前者是一个视图,而后者是一个控制器,它提供的定制要少得多 - 但如果你的用例是打开网站,那么这可能是一个很好的选择。