I am implementing crowdsale smart contract to accept ether and invoke ERC20 smart contract to assign tokens count calculated depending on the amount of ether invested.
I heard that just implementing default payable fallback is not right approach as that doesn't prevent customers from sending ether directly from exchange shared wallet accounts.
function() payable {
}
What is the right approach then to implement fallback payable (apart from throw there) in crowdsale contracts so that customers could only send ether via MEW, Metamask and other private wallets?