[HarmonyOS][K老师]鸿蒙=》如果前端伪造token, 如何做跳转拦截?
原创
13757 浏览 373 点赞 0 收藏
一、跳转拦截实现方案(前端层)
1. 路由守卫拦截
// 鸿蒙路由守卫实现
import router from '@ohos.router';
// 全局路由前置守卫
router.addBeforeInterceptor((to, from, next) => {
if (to.requiresAuth) {
verifyToken().then(valid => {
valid ? next() : router.replace({ url: 'pages/Login' });
});
} else {
next();
}
});
// Token验证函数(带缓存机制)
async function verifyToken() {
const cached = localStorage.get('token_valid');
if (cached === 'true') return true;
try {
const res = await http.post('/auth/verify');
localStorage.set('token_valid', res.valid.toString());
return res.valid;
} catch {
return false;
}
} 2. 请求拦截器防护
// 网络请求拦截器
import http from '@ohos.net.http';
const httpRequest = http.createHttp();
// 请求前拦截
httpRequest.on('headerReceive', (err, data) => {
if (data.responseCode === 401) {
router.clear(); // 清空路由栈
router.replace({ url: 'pages/Login' });
}
});
// 请求发送拦截
httpRequest.on('beforeSend', options => {
options.header['Authorization'] = `Bearer ${getSecureToken()}`;
}); 二、Token 安全加固方案
1. 后端强化措施(关键)
| 防护手段 | 实施要点 |
|---|---|
| JWT 签名验证 | 使用 RS256 非对称加密,私钥仅存服务端 |
| 短时效 Token | Access Token 有效期≤15分钟 |
| Refresh Token | 独立存储+设备绑定,单次使用后失效 |
| 权限最小化 | 接口级 RBAC 控制,拒绝越权访问 |
2. 前端安全实践
A. Token 安全存储
// 使用鸿蒙安全密钥库(HUKS)
import huks from '@ohos.security.huks';
async function saveToken(token: string) {
const alias = 'app_token_key';
const properties: huks.HuksOptions = {
properties: [
{ tag: huks.HuksTag.HUKS_TAG_ALGORITHM, value: huks.HuksKeyAlg.HUKS_ALG_AES },
{ tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, value: 256 },
{ tag: huks.HuksTag.HUKS_TAG_PURPOSE, value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT }
]
};
await huks.generateKey(alias, properties);
const encryptResult = await huks.encrypt(alias, token, properties);
localStorage.set('enc_token', encryptResult.outData);
} B. XSS 防御矩阵

C. 网络传输加固
// 强制HTTPS+证书绑定
import ssl from '@ohos.net.ssl';
const tls: ssl.SSLConfig = {
protocol: sls.SSLProtocol.TLSv1_3,
certificate: 'rawfile/cert.pem', // 预置证书
usePreload: true
};
httpRequest.setSSLConfig(tls); 三、深度防御策略
1. 设备指纹绑定
// 生成设备唯一指纹
import deviceInfo from '@ohos.deviceInfo';
function genDeviceId() {
return crypto.createHash('sha256')
.update(deviceInfo.deviceId + deviceInfo.boardId)
.digest('hex');
}
// 发送请求时携带
httpRequest.setExtraData({
'X-Device-Fingerprint': genDeviceId()
}); 2. 行为异常检测
| 检测维度 | 防护动作 |
|---|---|
| 高频Token验证 | 触发人机验证(CAPTCHA) |
| 地理位置突变 | 强制重新登录 |
| 设备特征变更 | 终止所有会话 |
3. 服务端协同防护
# Django 示例:Token验证+设备绑定
def verify_token(request):
token = request.headers.get('Authorization')
device_id = request.headers.get('X-Device-ID')
try:
payload = jwt.decode(token, PUBLIC_KEY, algorithms=['RS256'])
user_device = UserDevice.objects.get(user=payload['sub'])
if user_device.device_id != device_id:
raise SuspiciousOperation("设备不匹配")
return JsonResponse({"valid": True})
except Exception as e:
log_security_event(request, e)
return JsonResponse({"valid": False}, status=401) 四、监控响应机制
1. 实时告警系统
- 配置 Token 异常使用告警(如同一Token多设备使用)
- 对接 SIEM 系统(如 Splunk)分析攻击模式
2. 自动熔断策略
// 前端检测到连续3次无效Token
let errorCount = 0;
router.addAfterInterceptor((to, from) => {
if (from?.path === '/login' && to.requiresAuth) {
errorCount++;
if (errorCount >= 3) {
showAlert("检测到异常行为,请30分钟后重试");
disableNavigation(30 * 60 * 1000); // 禁用导航30分钟
}
}
}); 终极防护建议:前端实现 二次认证(如生物识别)用于敏感操作定期进行 安全审计(推荐 OWASP ZAP 工具)启用 服务端会话管理(如 Redis 黑名单机制)
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
标签
HarmonyOS
K老师
伪造token拦截
暂无评论数据
发布
相关推荐
以技术破局,以生态赋能|IAM亮相鸿蒙智选峰会,X5Ultra引领智家健康新趋势
云上修代码
2171
0鸿蒙智选720智能空气净化器铂境Pro Max亮相鸿蒙峰会 以硬核科技定义智慧健康新标杆
快乐编译者
1168
0华为全场景亮相AWE 2026:华为鸿蒙智家 智慧全生态重塑未来家
2030
0华为鸿蒙智家技术升级,多款新品亮相AWE2026
老李的控制台
1202
0微信鸿蒙版 App 扫码登录手表端要求公布,手机系统需升级至 HarmonyOS 6.0.0.130 及以上版本
1361
0K老师
大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。
118
帖子
0
提问
1412
粉丝
最新发布
[HarmonyOS][K老师]鸿蒙中主线程与子线程通信机制详解,Emitter,Worker,EventHandler和EventRunner。
2026-01-28 11:31:47 发布[HarmonyOS][K老师]鸿蒙大文件上传方案。
2026-01-28 10:30:53 发布热门推荐