為了更好的保障開啟 URL 時的 App 的安全性,可在容器調用相關 URL 之前對 URL 進行判斷,如果開啟的不是白名單內的 URL 則禁止調用。
建議在調用如下介面前進行 URL 判斷:
// 判斷開啟的 URL 是否在白名單內
NSString *urlWhiteList = @"xxxx";
NSURL *url = [NSURL URLWithString:@"https://example.com/products/xxx"];
if (![url.host isEqualToString:urlWhiteList]) {
return;
}
// 開啟線上 URL
[[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithParams:@{@"url": @"https://example.com/products/xxx"}];
// 基於 URL 建立 vc
MPH5WebViewController *vc = (MPH5WebViewController *)[[MPNebulaAdapterInterface shareInstance] createH5ViewController:@{@"url":@"https://example.com/products/xxx"}];
重要
URL 要進行精準匹配,至少要匹配到 URI 類的 scheme 和 host 資訊,慎用或不用正則匹配,嚴格避免使用 contains、startsWith、endsWith、indexOf 等不精準函數。