终端PC Web安全 PartA
字数 1335 2025-08-22 12:22:24
PC Web安全教学文档:终端PC Web安全 PartA
1. PC Web应用背景与发展趋势
- 行业现状:多数行业Windows应用已从原生客户端过渡到Web化
- Web化优势:
- 容器稳定性高
- 版本迭代稳定
- 错误率更低
- 跨平台方便
- 开发成本低于C/C++客户端
- 技术演进:从Duilib、QT到内嵌CEF、WebView2.0和Electron
2. 客户端安全分类与挑战
2.1 安全分类
- 内因:
- 研发BUG
- 程序内存数据修改/破坏
- 接口安全权限过高被滥用
- 外因:
- 注入攻击
- 流量拦截
- 代理篡改
2.2 防御措施
- 驱动级或底层保护方案
- 丰富数据维度,增强标签和分析能力
- 增加Web安全防御:
- Cookie安全
- Web通信安全
- XSS/CSRF防御
3. 安全生命周期管理
3.1 三阶段模型
- 事前:
- 系统环境检测
- 软件运行环境验证
- 登录保护
- 身份认证
- 事中:
- 接口请求安全
- 运行态安全
- 数据态安全
- 权限管控
- 审计
- 事后:
- 可追溯
- 可排查
- 可定性
4. URL感知技术
4.1 概念与作用
- 检测当前是否运行在PC容器中
- 属于事前和事中防护措施
- 需平衡安全与性能/用户体验
4.2 实现案例
- 某聊天软件通过URL感知运行环境
- 非客户端环境不渲染主页面
- 不触发接口功能
- 效果:
- 增加逆向/抓包难度
- 提升端内调试门槛
5. 认证机制
5.1 基于Cookie的认证
- 基本实现:
- Cookie包含客户端密钥和系统属性
- 加密存储Value数据
- 缺点:易被仿造或盗取绕过
5.2 增强型Cookie双向认证
- PC Client生成随机特征填充Cookie
- 浏览器基于规则/约定二次加密
- 浏览器回调客户端方法解密验证
- 双向认证通过后填充真实Cookie
- 优势:增加对抗难度,随机运算提高破解复杂度
5.3 基于共享数据/通信的认证
- 实现方式:
- RPC/Socket传输运行态数据
- 客户端与浏览器握手认证
- 流程:
- 认证完成后客户端发送真实数据
- 浏览器写入Cookie或跨域存储
- 优势:
- 攻击需构造模拟服务
- 需分析私有协议
- 攻击成本显著提高
5.4 基于三方服务的认证
- 流程:
- 客户端和Web生成认证Data
- 使用Server公钥加密
- 发送至认证服务验证
- 认证成功分发Token
- 后续操作基于Token鉴权
- 扩展功能:
- 异常环境感知
- 数据采集
- 系统状态截屏
6. Loading Local Page安全风险
6.1 设计初衷
- 提升用户体验
- 缓解网络/环境导致的加载延迟
- 快速渲染界面
6.2 安全隐患
- 典型实现:
const xmlHttpReq = new XMLHttpRequest()
xmlHttpReq.open()
xmlHttpReq.onreadystatechange=function(location.href = res.data)
xmlHttpReq.send()
- 注入示例:
<script type="text/javascript" src="require.js"></script>
<script type="text/javascript">
require(["launcher"]);
</script>
function launcher() {
alert("loading success.");
}
(function(){
launcher()
})()
- 攻击场景:
- 跳转伪造页面
- Cookie窃取
- 钓鱼攻击
6.3 防护建议
- 避免业务HTML本地存储
- 非必要不在本地HTML中包含业务接口请求
- 加载前校验本地HTML完整性
- 存在问题时可:
- 覆盖本地文件重新加载
- 客户端请求线上加载
7. 总结与展望
- PC Web安全是终端安全与Web安全的融合
- 需在成熟度基础上做加法
- PartB将探讨CEF/WebView2的攻击面
本教学文档基于先知社区文章《终端PC Web安全 PartA》整理,保留了所有关键技术点和安全实践,去除了无关描述,可作为PC Web安全防御的参考指南。