В Java я использую JTidy для очистки HTML. Я не уверен, что он подойдет вам, но если вы используете Google для JTidy, вы также можете перейти по ссылке на реализацию C / C ++ и посмотреть, выполняет ли она то, что вам нужно.
Что касается того, что нужно очищать: посмотрите спецификации W3C для HTML; любой тег, которого там нет, не принадлежит HTML. Но опять же, я мог бы неправильно понять вашу концепцию "defang".