【OpenHarmony/HarmonyOs 】安全打开网页:Axios HTTPS 拦截、URL 检测与 ArkWeb 容器

发布时间:2026/7/21 7:47:13

【OpenHarmony/HarmonyOs 】安全打开网页:Axios HTTPS 拦截、URL 检测与 ArkWeb 容器
【OpenHarmony/HarmonyOs 】安全打开网页Axios HTTPS 拦截、URL 检测与 ArkWeb 容器前言导航类应用最重要的边界是外部链接。一个 URL 从用户输入到显示网页至少要经过协议规范化、网络策略、安全判断、路由传参和 WebView 加载。任何入口绕过其中一步都可能形成风险。本文给出 LinkOS 链界当前实现并说明生产环境还需要补齐什么。一、第一层网络请求统一强制 HTTPS项目基于ohos/axios创建共享实例并设置 8 秒超时privatestaticreadonlyTIMEOUT 8000; HttpUtil.instance axios.create({ timeout: HttpUtil.TIMEOUT, headers: {Content-Type:application/json} });请求拦截器阻止非 HTTPS 地址HttpUtil.instance.interceptors.request.use((config: InternalAxiosRequestConfig){if(config.url !config.url.startsWith(https://)) { console.error([HttpUtil] Non-HTTPS blocked:, config.url);returnPromise.reject(newError(Only HTTPS requests are allowed)); }returnconfig; } );统一实例的优势在于搜索建议、天气、云函数等请求都会自动遵守相同策略。以后增加 Token、Trace ID、统一错误映射也只需改一处。二、第二层区分超时与断网HttpUtil.instance.interceptors.response.use( response response,(error: AxiosError){if(error.code ECONNABORTED) { console.error([HttpUtil] Request timeout); }elseif(error.message?.includes(Network Error)) { console.error([HttpUtil] Network error); }returnPromise.reject(error); } );网络错误不应全部显示“请求失败”。超时、无网络、证书错误、401 与服务器 500 对用户和排查者的意义不同。建议进一步定义领域错误例如TIMEOUT、OFFLINE、AUTH_EXPIRED页面只负责将错误映射为合适提示。三、第三层打开前执行 URL 安全检测privateasyncopenUrl(url:string):Promisevoid {constsafe awaitSecurityUtil.checkUrlSafety(url);if(!safe) { AlertDialog.show({title:风险提示,message:该网站 (${url}) 可能包含恶意内容已拦截。,confirm: {value:知道了,action: () {} } });return; } router.pushUrl({url:pages/v2/WebViewPage,params: {url} }); }项目中的SecurityUtil目前是模拟实现要求 URL 以 HTTPS 开头、提取 hostname并对本地黑名单检查。它适合演示调用链但不能等同于真实安全能力。生产环境至少要防范钓鱼与恶意域名Unicode 相似字符域名重定向后跳到 HTTP 或危险 Schemejavascript:、file:等不期望协议证书异常与中间人攻击URL 中携带的敏感 Token 被记录到日志。四、域名匹配不能使用简单 includes示例中黑名单使用hostname.includes(domain)。这会让notmalicious.com也可能命中malicious.com。更严谨的域名边界判断是functionmatchesDomain(host:string,domain:string): boolean { return hostdomain||host.endsWith(.${domain}); }此外正则提取 hostname 适合受控输入面对完整 URL 标准时应优先使用平台提供的 URI/URL 解析能力避免自行解析遗漏边界。五、ArkWeb 页面接收路由参数EntryComponentstructWebViewPage{controller: webview.WebviewControllernewwebview.WebviewController();Stateurl:string;Statetitle:string加载中...;Stateprogress:number0;aboutToAppear() {constparams router.getParams()asRecordstring,string;if(params params[url]) {this.url params[url]; } } }WebviewController用于后续控制前进、后退、刷新等行为路由参数只负责传递目标地址。页面进入时仍建议再次验证参数实现“纵深防御”不要完全相信上一个页面。六、标题和进度构成基础浏览体验Web({ src:this.url, controller:this.controller }) .width(100%) .layoutWeight(1) .onTitleReceive(event {if(event)this.title event.title; }) .onProgressChange(event {if(event)this.progress event.newProgress; });加载进度小于 100 时展示 Progress收到网页标题后更新顶部栏。即使只是一个最小 Web 容器这两个反馈也能显著降低用户对“页面卡住”的误判。完整浏览器容器还应实现WebView 内部返回历史历史为空再退出页面加载失败页与重试按钮顶部域名显示和证书风险提示下载、文件选择、权限请求策略新窗口与外部 Scheme 拦截页面销毁时资源释放JavaScript Bridge 最小权限和来源校验。七、不要把 API Key 放进客户端项目计划接入 AI 服务这里必须强调HAP 最终运行在用户设备上任何硬编码 Key 都能被提取。正确链路应是HarmonyOS 客户端 ↓ 用户身份令牌 HTTPS AGC CloudFunction↓服务端保管密钥、限流、审计 第三方 AI API客户端只接触自己的短期身份凭证不接触供应商密钥。云函数还应校验用户、限制请求频率并过滤日志中的敏感字段。八、总结网页安全不是一个startsWith(https://)就能完成而是多层防线输入规范化、统一请求拦截、域名安全服务、重定向检查、WebView 导航拦截与服务端密钥隔离。当前项目已经搭出完整链路骨架下一阶段应把模拟检测替换为真实安全服务并补齐 WebView 内部导航策略。️

相关新闻

Java+Vue+SpringBoot员工绩效系统:毕业设计全栈实战与部署指南

Java+Vue+SpringBoot员工绩效系统:毕业设计全栈实战与部署指南

2026/7/21 7:47:13

这次我们来看一个面向毕业设计的员工绩效考核管理系统。这是一个基于Java、Vue、Spring Boot和MySQL的完整开源项目,包含了源码、数据库、配套文档和答辩教程,旨在为计算机相关专业的毕业生提供一个可直接使用、二次开发或学习参考的实战案例。对于正在寻…

【OpenHarmony/HarmonyOs 】元服务聚合入口实战:使用 Want 拉起 Ability 与 URI

【OpenHarmony/HarmonyOs 】元服务聚合入口实战:使用 Want 拉起 Ability 与 URI

2026/7/21 7:47:13

【OpenHarmony/HarmonyOs 】元服务聚合入口实战:使用 Want 拉起 Ability 与 URI 前言 HarmonyOS 应用不仅能打开网页,还可以通过 Want 描述一次跨组件或跨应用请求。对于“数字生活入口”类应用,元服务聚合页可以统一展示服务名称、分类、支持…

宠物医院的业务到底有多复杂?这个 Spring Boot 毕设把预约、档案和后台管理串成了一条线【项目编号:project75036】

宠物医院的业务到底有多复杂?这个 Spring Boot 毕设把预约、档案和后台管理串成了一条线【项目编号:project75036】

2026/7/21 7:47:13

宠物医院的业务到底有多复杂?这个 Spring Boot 毕设把预约、档案和后台管理串成了一条线Spring Boot 毕业设计项目展示宠物医院看起来只是“给宠物看病”,真正放进一个信息系统里,却会发现它涉及用户、宠物、医生、预约、诊疗信息、内容展示和…

BuildBuddy CLI工具完全指南:从安装到高级调试技巧

BuildBuddy CLI工具完全指南:从安装到高级调试技巧

2026/7/21 17:07:43

BuildBuddy CLI工具完全指南:从安装到高级调试技巧 【免费下载链接】buildbuddy BuildBuddy is an open source Bazel build event viewer, result store, remote cache, and remote build execution platform. 项目地址: https://gitcode.com/gh_mirrors/bu/buil…

延迟和丢包监控工具对比:运维场景下该怎么选

延迟和丢包监控工具对比:运维场景下该怎么选

2026/7/21 17:07:43

做跨境运营和网络运维,延迟和丢包是最常遇到的两种异常。线路质量好不好,账号稳不稳定,很大程度取决于这两个指标。但市面上能测延迟和丢包的工具不少,从命令行到可视化平台,各有侧重。选哪个来搭监控体系,…

内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方式

内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方式

2026/7/21 17:07:43

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之二十七:内存占用测试Camera相机进程内存指标分布report概述ok 这一篇我们开始讲: 内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方…

掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析

掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析

2026/7/21 17:07:43

掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析 【免费下载链接】LeetCode-Questions-CompanyWise Contains Company Wise Questions sorted based on Frequency and all time 项目地址: https://gitcode.com/GitHub_Trending/le/LeetCod…

WPS AI批量处理失效?深度解析API调用瓶颈、权限断点与格式兼容性黑盒(附诊断清单)

WPS AI批量处理失效?深度解析API调用瓶颈、权限断点与格式兼容性黑盒(附诊断清单)

2026/7/21 17:07:43

更多请点击: https://intelliparadigm.com 第一章:WPS AI批量处理失效现象全景扫描 WPS AI的批量处理功能在实际办公场景中频繁出现“静默失效”——界面无报错、进度条正常推进,但目标文档未被实际处理。该现象并非偶发,而是覆盖…

从手动触发到全自动执行:桌面 Agent 工作流的 5 个权限检查点与 3 种回滚设计

从手动触发到全自动执行:桌面 Agent 工作流的 5 个权限检查点与 3 种回滚设计

2026/7/21 16:57:43

桌面级AI Agent的安全执行架构:从权限控制到故障自愈 去年用某个桌面 Agent 批量重命名照片时,我经历了职业生涯最漫长的 30 秒——脚本在遍历目录时跳过了权限检查,把整个 vacation_2023 文件夹改成了乱码。这件事让我意识到:Ag…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…