[HarmonyOS][K老师]鸿蒙=》如果前端伪造token, 如何做跳转拦截? 原创
头像 K老师 2026-01-07 17:05:33    发布
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 非对称加密,私钥仅存服务端
短时效 TokenAccess 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 防御矩阵

cke_4830.png

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

暂无评论数据

发布

头像

K老师

大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。

118

帖子

0

提问

1412

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255