Unless there is some way within your Stripe setup to specify that a particular subscription type should be limited to one subscription per customer (and I don’t know if there is – I haven’t worked with Stripe subscriptions for about six years, and they’ve completely changed since then), I don’t see how you can fix it from your end, since all the code that actually creates the subscription and charges the client happens on Stripe’s servers.
You could check in your webhook if the subscription being returned from Stripe is a duplicate of an existing one, and if it is then use the Stripe API to remove and refund the newly created subscription and flash a message to the user that they had created a duplicate subscription which has been automatically cancelled. That would give more or less the same end result – but I don’t think you can prevent the subscription from being created in the first place from your end.