The latest thing some do is to issue a virtual card for just one transaction. Which as far as I can tell is actually pretty good
At present, I transfer money into my checking account for each and every outgoing transaction, so there's both a small time window and a small limit on the amount of a theft, and I have less to worry about giving out my checking account number for incoming transfers.
Mildly related: At one point I was considering how easily someone could make an e-mail server where valid addresses were all in the form username+code@host, where users could create/manage valid codes using a smartphone app, noting which ones were for which purpose and having inactivity or expiry rules.
Unlike current user+anything@host forms, a the + component would be mandatory, and an incorrect/expired code means spam filtering.