I have seen that reusing the same IOTA address for outgoing transactions is risky since the address could be compromised and, if for some reason, the address received some money again, everything could be stolen (by brute force). It is thus recommended to provide different addresses for every single payment we expect to receive or at least, to wait until all payments are received before withdrawing the whole amount from a particular address. My question is, since we have already given the address to someone in order for them to pay us, what is preventing that person from sending us money again (after we have withdrawn the money from the address)? It could be an "honest" mistake from the other person that could potentially compromise the money... is IOTA doing anything to prevent that?
This is indeed a problem that IOTA had till today. The good answer is that this will end on April28th, when the whole IOTA network will be updated and upgraded to a new network. After that all new addresses will be reusable and can receive funds multiple times, even if you have spent already from that address. If you receive funds again on that address just leave them there untill the network upgrade process starts. In the migration all Funds will be moved to new seeds and new addresses on the new network. So anyway you will have tp provide your friend with a new address after the network migration if he wants to send you funds again, as the old addresses will all not work anymore. Most recent information you will find in this blog from IOTA: