Is possible specify who can send bitcoins to me? I have an idea to store data in OP_RETURN, but…

The main problem is it need to easy to review all the transactions. I mean, every user need to have access to the OP_RETURN, giving the public key address. But, most block explorers show all transactions, by default. The “blockchain.info” shows all the transactions, a common user will not use the “Filter”.
Someone are capable to send many “small fractions” of bitcoins. In this way a user will see many transactions, creating some “pollution”. Also, the software will need to filter it, because the fee will be higher than bitcoins that the “malicious users” are sending. Also, the software need to get all the OP_RETURN too, so they need to check one by one.

My solution is simple, restrict who can sent the bitcoin. In this case, anyone could know my public key, but no one can send bitcoin to it, only allowed people. So, I can restrict the address X to send me a bitcoin, but the address Y can’t.

It’s possible in the Bitcoin? If not how is the easiest way to make it easier for software and for a user?
Not possible.  Anyone who can spend a utxo can create a transaction sending those coins to any address, or any script, that they wish.  There is no way to forbid people from sending coins to your address.

Your software will need to filter the transactions and determine which of them were authorized by you.