Esto parece algo que necesita ser rediseñado por completo. El problema principal es que permite que los contenidos del archivo about.html se escriban a través de una solicitud web. El usuario puede enviar una solicitud que les permitirá representar HTML de forma arbitraria.
¿El marcado en about.html puede tener una plantilla? Si es así, entonces puede escapar de los campos para el contexto apropiado (atributo vs. elemento), pero tal como está ahora, no hay una buena manera de asegurar este código.
Editar para aclarar:
Parece que es posible que necesite una mejor comprensión de lo que es la creación de secuencias de comandos entre sitios (XSS). XSS es un nombre terrible para la vulnerabilidad. Lo que realmente está ocurriendo es la inyección del código del lado del cliente. Más información está disponible aquí: enlace El corazón de una vulnerabilidad xss es el hecho de que un atacante puede controlar el navegador del usuario (hacer marcado y ejecutar JavaScript arbitrario).
El problema con la implementación actual es que está tratando de permitir que un usuario escriba un documento HTML completo. Con su solución, el usuario debe poder escribir algunos html, pero no se le debe permitir escribir html maliciosos. Esto es extremadamente difícil de hacer correctamente. Escapar de html (usando htmlspecialchars, en este caso) como parte de la solución correcta, pero no creo que funcione con la implementación actual. Una solución mucho más sencilla sería crear una plantilla para el archivo about.html y escapar de todos los datos que el usuario está transmitiendo. De esta manera, ninguna de las marcas será controlada por el usuario.