為了更好地保障打開 URL 時 App 的安全性,可在容器調用相關 URL 之前對 URL 進行判斷,如果打開的不是白名單內的 URL 則禁止調用。
建議在調用如下接口前進行 URL 判斷:
public class MPNebula {
/**
* 啟動在線 URL
*
* @param url 在線地址
*/
public static void startUrl(String url);
/**
* 啟動在線 URL
*
* @param url 在線地址
* @param param 啟動參數
*/
public static void startUrl(String url, Bundle param);
}
// 創建page
public static final void openH5(String url) {
if (TextUtils.isEmpty(url)) {
return;
}
H5Service h5Service = LauncherApplicationAgent.getInstance().getMicroApplicationContext()
.findServiceByInterface(H5Service.class.getName());
H5Bundle bundle = new H5Bundle();
Bundle param = new Bundle();
// 打開的在線地址
param.putString(H5Param.LONG_URL,url);
bundle.setParams(param);
if (h5Service != null) {
// 同步創建api
H5Page h5Page=h5Service.createPage(activity,bundle);
// 異步創建api
h5Service.createPageAsync(activity, bundle, h5PageReadyListener);
}
}
重要
URL 要進行精準匹配,至少要匹配到 URI 類的 scheme 和 host 信息,慎用或不用正則匹配,嚴格避免使用 contains
、startsWith
、endsWith
、indexOf
等不精準函數。
文檔內容是否對您有幫助?