首页 > 解决方案 > 票务系统中的php漏洞

问题描述

我正在为某个网站建立一个票务系统,用户可以从中预订某些活动的门票。我的预订机制是这样的:

  1. 用户点击立即购买按钮。
  2. PayPal 处理付款。
  3. 成功结帐后,PayPal 将用户重定向到某个生成票号的“generate_ticket.php”页面。
  4. 用户将被重定向到显示给他们的票号的第一页。

问题出在这里:任何恶意用户都可以通过观察开发者工具中的网络点击,知道成功结账被重定向到的 url,并向该页面“generate_ticket.php”发送请求并获得免费门票。

这是我想解决这个问题的方法:

将用户代理引向当前页面的页面地址(如果有)。这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改 HTTP_REFERER 作为一个特性的能力。简而言之,它不能真正被信任。

这个变量可以修改。所以,它是不​​可靠的,至少不是单独的。

那么,是否有人有任何解决方案来修复这些漏洞或阻止用户请求免费门票?

标签: phppaypalticket-system

解决方案


Paypal 有一个称为 IPN 的功能,基本上,一旦您在 generate_ticket.php 上获取数据,您就不会直接向用户发送票证,一旦创建交易,您可能会在数据库中插入一条具有待处理状态的记录并根据贝宝的响应更新它,这里是 IPN开始发挥作用,交易完成后,贝宝将发送一个您提供为 notify_url 的发布请求,您将在其中处理向用户发送门票的脚本。


推荐阅读