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 a payable fallback (apart from throw there) in crowdsale contracts so that customers could only send ether via MEW, Metamask and other private wallets?