【问题标题】:viewcontroller using a NULL baseURL argument with the loadHTMLString baseURL method : data theoremviewcontroller 使用 NULL baseURL 参数和 loadHTMLString baseURL 方法:数据定理
【发布时间】:2016-06-29 14:49:34
【问题描述】:

我面临的问题是“MyViewcontroller 使用带有 loadHTMLString baseURL 方法的 NULL baseURL 参数:数据定理”- 我已经成功完成了我的任务并且一切正常。

问题出现在 OSWAP 安全扫描漏洞中,它显示上述错误。

我的代码 sn-p:-

  NSString *aHtmlString = kEmptyString;

    // Getting the bool from configuration plist
    NSString *thePlistPath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
    NSDictionary *theURLdata = [[NSDictionary alloc] initWithContentsOfFile:thePlistPath];
    is

ServerFAQAvailable = [[theURLdata valueForKey:kIsServerFAQAvailableKey] boolValue];

if (one || two || three) {
   aHtmlString = [self loadFAQFor];
} else {
  aHtmlString = [self loadFAQForwithout];
}
NSURL *baseURL = [NSURL fileURLWithPath:thePlistPath];

[self.faqWebView loadHTMLString:aHtmlString baseURL:baseURL]; 

更新:

if (one || two || three) {
       aHtmlString = [self loadFAQFor];
    } else {
      aHtmlString = [self loadFAQForwithout];
    }
    NSURL *baseURL = [NSURL fileURLWithPath:@"about:blank"];

    [self.faqWebView loadHTMLString:aHtmlString baseURL:baseURL];

仍然显示扫描问题

【问题讨论】:

  • 我将首先记录thePlistPath(可能还有theURLdata)的值,并验证您在thePlistPath 指向的位置确实有一个文件。如果你不这样做,那么[NSURL fileURLWithPath:thePlistPath]; 可能会返回 nil,theURLdata 也可能会返回 nil。
  • 什么是eeyyii?请使用清晰的变量名,kConfigurationPlistNamekPlistFormType 的值是什么?这是否正确设置了 thePlistPath 的值还是 Nil ?
  • @MostafaTorbjørnBerg 嗨,这是 loadFAQFore 中基于条件的变量,我正在构建 html .js 和 .css 文件
  • 只有两天,我在接下来的 48 小时内有空。任何需要更多信息的人都可以随时询问。任何提示都会有帮助。
  • 你试过在baseURL参数中传递[NSURL new]吗?

标签: ios objective-c iphone security uiwebview


【解决方案1】:

问题在于baseURL: 参数。 html 字符串不需要 BaseURL,它通常用于相对链接。如果您要做的只是显示一些 html,您确定需要它吗?

标记的安全问题是有道理的(我的理解是粗略的):如果 webview 的 baseURL 设置为本地文件系统,那么通过该 webview 加载的页面(最终)可以访问本地资源。

尝试为 baseURL: 传递 nil 应该会消除此警告。

【讨论】:

  • Related url 是什么意思?能否请您提供详细信息
  • 某种意义上的相对路径?...,这也是相对路径吧[NSURL fileURLWithPath:@"about:blank"]
  • 您对提供相对路径有什么建议
  • @Spynet ("about:blank" --我不确定 UIWebView 是如何处理的。)无论如何,相对链接是相对于基本 URL 的。在普通互联网上,如果网页从“website.com/about”开始,则 BaseURL 将是 website.com,而相对链接将是“/services”——不需要完整地址。但是 URL 可以是文件和本地目录的基本 URL。在这种情况下,webview 获得了读取本地文件的特殊权限。如果该 html 链接到外部页面,则 UIWebView 仍将拥有该权限,并且(显然)该页面可以读取本地文件——这就是安全问题。
  • 如果你想要相对的本地目录链接,为了解决安全问题,你可以实现 webview 委托并拦截点击的链接,重新创建完整的相对路径。如果您只想显示本地 html,则不需要基本 URL 并将其设置为 nil。
【解决方案2】:

baseURL应该是[[NSBunld mainBunld] bunldPath],你可以这样试试..

NSString *path = [[NSBundle mainBundle]bundlePath];
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:self.htmlName ofType:@"html"];
NSString *htmlContent = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:path]];

【讨论】:

  • 最后我找到了正确的答案是 [NSURL URLWithString:@"about:blank"],谢谢各位的帮助
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多