HarmonyOS 鸿蒙Next 避免加载不安全的URL或页面资料逻辑是否写反 校验成功却直接拦截
HarmonyOS 鸿蒙Next 避免加载不安全的URL或页面资料逻辑是否写反 校验成功却直接拦截
https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-harmony-application-security-V5
关于避免加载不安全的URL或页面这里,是不是写反了: 校验成功,返回true, 然后直接拦截了。
// 校验函数
function checkUrl(str: string): boolean {
let tmpUri = new uri.URI(str);
let res = tmpUri.normalize(); // 注意,需要先对tmpUri进行normalize,否则会绕过安全校验
console.info("res.scheme:" + res.scheme) // 协议
console.info("res.host:" + res.host) // 域名
console.info("res.port:" + res.port) // 端口
console.info("res.path:" + res.path) // 路径
console.info("res.ssp:" + res.ssp)
// 获取到scheme、host、port、path等参数值后,根据业务实际进行安全校验
// 此处省略部分,根据业务需要进行校验
if ("校验成功") {
return true;
}
return false
}
Web({ src: 'www.huawei.com', controller: this.controller })
.onLoadIntercept((event) => {
console.info('onLoadIntercept:' + event.data.toString())
let tempUrl = event.data.toString()
return checkUrl(tempUrl) // 返回true表示阻止此次加载,否则允许此次加载
})
更多关于HarmonyOS 鸿蒙Next 避免加载不安全的URL或页面资料逻辑是否写反 校验成功却直接拦截的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这边文档没有问题,onLoadIntercept()这个方法的调用,返回true会拦截web组件当前输入的src地址。返回false则放行。
比如下面这种写法,加载url为baidu时就会拦截,不是baidu就正常显示。
.onLoadIntercept((event) => {
let tempUrl = event.data.toString()
if (tempUrl == "https://www.baidu.com") {
return true // 返回true表示阻止此次加载,否则允许此次加载
} else {
return false
}
})
更多关于HarmonyOS 鸿蒙Next 避免加载不安全的URL或页面资料逻辑是否写反 校验成功却直接拦截的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next系统在处理URL或页面资料的安全性时,其逻辑设计并非写反。系统通常会对URL进行严格的校验以确保其安全性。校验成功意味着该URL符合系统预设的安全标准,理论上应当允许加载。然而,在某些安全策略特别严格的场景下,系统可能会采取一种“白名单”机制,即只有明确被允许的URL才能被加载,其余即使校验通过也可能被视为潜在风险而被拦截。
此外,还需考虑是否存在动态安全策略更新,比如云端推送的安全策略变更,这些变更可能导致原本校验通过的URL在新策略下被视为不安全而被拦截。
另外,如果系统配置了额外的安全插件或模块,这些也可能影响URL的加载决策,即便基础校验通过,也可能因插件的安全策略而被拦截。
综上所述,HarmonyOS 鸿蒙Next系统避免加载不安全的URL或页面资料的逻辑设计本身并非写反,而是基于复杂的安全策略考量。若遇到校验成功却直接拦截的情况,建议检查系统的安全策略配置、是否有安全插件或模块影响,以及是否有最新的安全策略更新。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html