在点击支付时,浏览器会向后端发送包含订单金额的数据包。如果后端没有校验签名,攻击者可以抓包将 price: 9999 修改为 price: 0.01。
防御: 支付金额应以数据库记录为准,不应信任前端提交的金额参数。
如果不安全的对象引用(Insecure Direct Object References)存在,用户 A 将 URL 中的 user_id=1001 改为 user_id=1002,即可查看用户 B 的个人信息。
防御: 必须在后端验证当前登录用户的 Session ID 是否有权限访问请求的资源 ID。