This may already be possible. I'm not aware of any such method for doing this, but perhaps I've missed something.
When using stripe.js on a custom form, this generates a token for the submitted credit card data. It is then up to the back-end, where that form is submitted, to use that token to create a customer with the credit card data. Correct?
The only way to create a customer is by using the Secret API Key. This means that the Secret API Key would have to be placed on the server. Granted, the key would be embedded in back-end PHP code and would be difficult to expose, but the chance is still there. An exploited WordPress or Drupal script on the account, which allows a php shell to be uploaded, allowing the viewing of the Secret API Key. (Of course, not having an exploitable script on the web server would be ideal).
Would it be possible, or is it possible, to have a "Secret API Key" that's only function is to Create a Customer? I don't really like the idea of putting a "secret" key up on a public server, especially when that "secret" key can be used to run charges through our account. A dumbed down "secret" key that can only perform some functions (like creating a customer) would seem to be ideal. That way you can store the "real" Secret API Key on a restricted network and run charges on those Customers.
As is it right now, as I understand it, the only way to create a customer is to use the Secret API Key. The same Secret API Key that can be used to run charges on any customer. So if that Secret API Key is ever compromised, a lot of damage can be done. The chances of this Secret API Key being compromised are somewhat remote, but not 0. If I'm going to put a secret key out in the open, I would rather that it have limited access.