Ios 允许在UIWebView中加载http站点,而不允许在应用程序范围内任意加载

Ios 允许在UIWebView中加载http站点,而不允许在应用程序范围内任意加载,ios,uiwebview,Ios,Uiwebview,作为我应用程序的一部分,我希望用户能够使用UIWebView共享和打开链接。当然,这不仅仅适用于http链接,因为iOS默认情况下拒绝打开不安全的连接。我知道我可以通过在PList中添加NSAllowsArbitraryLoads=true来绕过这一点,但通常不建议这样做,因为这会使整个应用程序暴露漏洞。然而,反对它的人通常不会提供任何替代建议。我遇到的另一种选择是将特定域列入白名单。这对我没有帮助,因为我希望用户能够共享他们想要的任何网站 是否有办法仅针对UIWebViewController

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


是否有办法仅针对UIWebViewController的特定实例绕过此安全措施?或者这会破坏目的吗?

您的UIWebViewController将请求哪种url?我认为在UIWebView中请求某个url时,您可以添加一个白名单。

您的UIWebViewController将请求哪种url?我认为当在UIWebView中请求某个url时,可以添加一个白名单。

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

输入的白名单URL可能会起作用,但同样,如果您允许用户输入自己的白名单URL,这就回避了为什么要引入额外步骤的问题,您最好首先启用任意加载


要么接受打击,暴露自己,要么遵守苹果的建议。我认为很多应用程序都允许任意加载,但这不是很好的实践。检查一下保安。这还取决于你希望你的应用程序做什么——是否有合法的理由访问非https站点等。

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

输入的白名单URL可能会起作用,但同样,如果您允许用户输入自己的白名单URL,这就回避了为什么要引入额外步骤的问题,您最好首先启用任意加载


要么接受打击,暴露自己,要么遵守苹果的建议。我认为很多应用程序都允许任意加载,但这不是很好的实践。检查一下保安。这还取决于你希望你的应用程序做什么-是否有合法的理由访问非https站点等。

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

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

正如我在问题中所说,用户可以添加任何网站,所以白名单是不可行的。我的意思是你们可以在请求之前添加一个白名单:第一步你们需要得到用户的url,并将这个url添加到白名单中。根据请求,您可以从白名单中删除此url。下面是codeOh的一些示例,有可能在运行时以编程方式实现吗?您介意编辑您的答案并添加一些代码来演示这一点吗?你提供的链接很难解读。正如我在问题中所说,用户可以添加任何网站,所以白名单是不可行的。我的意思是你可以在请求之前添加白名单:第一步你需要获得用户的url,并将此url添加到白名单。根据请求,您可以从白名单中删除此url。下面是codeOh的一些示例,有可能在运行时以编程方式实现吗?您介意编辑您的答案并添加一些代码来演示这一点吗?你提供的链接很难破译。