The better way to do this would be some sort of two-factor thing – e.g. imagine if the physical card had the equivalent of an embedded RSA-style one-time code generator or, better, a U2F USB/NFC device – which would be resistant to UI spoofing or, in the U2F case, phishing.
Unfortunately the banks have less motivation to invest in this as long as the costs of fraud are pushed onto merchants and all of the major players charge similar fees. If something like Apple Pay starts to catch on, perhaps we'll see that change once the banks’ main concern is avoiding a single vendor getting too much market share.