首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php漏洞中的票务系统

php漏洞中的票务系统
EN

Stack Overflow用户
提问于 2020-04-18 11:35:57
回答 1查看 64关注 0票数 1

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

  1. 用户单击“立即购买”按钮。
  2. PayPal负责支付。
  3. PayPal在成功签出后将用户重定向到某个生成票证号的"generate_ticket.php“页面。
  4. 用户将被重定向到第一个页面,并向他们显示票证编号。

问题是:任何恶意用户都可以通过观察开发人员工具中的网络点击来知道成功签出被重定向到的url,并向此页面"generate_ticket.php“发送请求并获得免费票。

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

  • 检查引用URL的$_SERVER['HTTP_REFERER']变量,并将其与paypal的URL进行比较。但问题是,正如手册中提到的那样。

将用户代理转到当前页的页(如果有的话)的地址。这是由用户代理设置的。并不是所有的用户代理都会设置它,有些代理还提供了将HTTP_REFERER作为一个特性进行修改的能力。简而言之,它是不可信的。

可以修改此变量。因此,它是不可靠的,至少不是单独的。

  • 当用户单击“立即购买”按钮时,我将停止表单提交,并在某个"token.php“文件中生成令牌,将其附加到表单,使用自定义变量从表单附加到url的PayPal特性,并将其存储在某个会话中,然后提交表单。当请求"generate_ticket.php“页面时,它将会话中的令牌与来自URL的令牌进行比较。但是,任何用户都可以单击该按钮,使"token.php“文件生成令牌并将其附加到表单上。然后获取该令牌,将其附加到url,并使用第一个漏洞请求一个票证。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-18 11:46:09

贝宝有一个名为IPN的特性,基本上,一旦您在generate_ticket.php上获得数据,您就不会直接向用户发送票证,一旦创建了一个事务,您就可以在数据库中插入带有挂起状态的记录并在paypal的响应上更新它,在这里IPN起作用,在事务完成后,Paypal将发送一个作为notify_url提供的post请求,您将在其中处理发送用户罚单的脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61288436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档