审查生成的订单更新器

来自 API 安全
Node 24 高级 6分钟 找出 5处问题

在把这段生成的订单更新代码暴露为 API 端点前,请审查它。

验证调用方签名,只允许其更新自己可变更的订单,仅接受获准的状态变更,写入脱敏审计事件,并返回有界的公开表示。

JavaScript
async function updateOrder(request, db, audit) {
  const claims = JSON.parse(
    Buffer.from(request.token.split('.')[1], 'base64url'),
  );
  const order = await db.orders.find(request.params.orderId);
  const patch = await request.json();
  if (claims.role === 'user') {
    Object.assign(order, patch);
  }
  await db.orders.save(order);
  await audit.write({
    token: request.token,
    order,
    event: 'order.updated',
  });
  const history = await db.orders.history(order.id);
  return {
    status: 200,
    body: { ...order, history },
  };
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误