htmlspecialchars vs htmlentities cuando se trata de XSS

He visto muchas respuestas contradictorias sobre esto. A muchas personas les encanta citar que las funciones php por sí solas no lo protegerán de xss.

¿Qué puede hacer XSS exactamente a través de htmlspecialchars y qué puede pasar a través de htmlentities?

Entiendo la diferencia entre las funciones, pero no los diferentes niveles de protección xss que le quedan. ¿Alguien podría explicar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta