如何用Burp Suite修改购物车价格?Django电商的安全风险解析
Django电商网站的购物车价格篡改安全漏洞
我近期发现Django电商网站存在一项严重安全漏洞:用户可在将商品加入购物车前修改商品价格。
许多开发者允许用户从前端发送价格数据,而这类数据极易通过Burp Suite或浏览器开发者工具篡改。
漏洞示例:
以下是一个简单的Django添加购物车视图:
def add_item(request): product_id = request.GET.get('product_id') price = request.GET.get('price') # User-controlled value (security risk) qty = int(request.GET.get('qty', 1)) cart_item = { 'product_id': product_id, 'qty': qty, 'price': price, # This price comes from the user, not the database! } request.session['cart'] = request.session.get('cart', {}) request.session['cart'][product_id] = cart_item request.session.modified = True return JsonResponse({'message': 'Added to cart'})
攻击者利用流程:
- 数据库中某商品定价为**$500**。
- 用户点击**"加入购物车"**。
- 攻击者通过Burp Suite拦截请求,而非发送原始价格。
- 将
price字段修改为**$1**后转发请求。 - 购物车将存储被篡改的价格,用户可按错误金额完成结账。
为何构成安全风险?
- 后端信任前端数据,而这类数据极易被篡改。
- 会话存储错误价格,导致商家财务损失。
- 攻击者可通过修改请求数据,以极低价格购买高价商品。
社区讨论点:
- 防范该漏洞的最佳实践有哪些?
- 电商网站是否应始终从数据库获取价格,而非接受前端数据?
- 处理Django购物车数据时,开发者还需注意哪些其他漏洞?
期待大家的见解!
内容的提问来源于stack exchange,提问作者Google User
相关产品推荐
相关产品推荐

