What protects full nodes from Selfish Mining attack?
There are no protections against selfish mining attack in any client, AFAIK. It is very hard to detect.
The way it works is that a miner will not publish the block immediately when they have discovered a block. They will continue to work on that block before publishing the block, effectively giving them a headstart over the other miners. This does not affect the safety of full node clients and SPV clients specifically.
And if there is no protection what makes a full node more secure than SPV client?
Full node and SPV client differs in terms of the kind of security they can provide. Full nodes verifies each and every block, ensuring that it follows the network rules. SPV clients trusts the server to be providing accurate information about the network and they will take the longest and highest difficulty chain as valid.