import Control.Monad.IO.Class (MonadIO(..), liftIO)
 import Data.Maybe (fromMaybe)
 import Lucid
+import Sanitize
 import Servant
 import System.Directory (getDirectoryContents)
 import qualified Data.Text as T
 htmlContainer :: (MonadIO m) => Maybe Theme -> Html a -> m (Html ())
 htmlContainer theme contents = do
   nav <- navigation theme
-  pure $ void $ with doctypehtml_ [lang_ "en"] $ do
+  pure $ sanitizeHtml $ void $ with doctypehtml_ [lang_ "en"] $ do
     head_ $ do
       title_ $ toHtml siteTitle
       meta_ [charset_ "utf8"]
 
--- /dev/null
+module Sanitize where
+
+import Lucid (Html(..), renderText, toHtmlRaw)
+import Text.HTML.TagSoup.Tree (parseTree, renderTree, transformTree, TagTree(..))
+import qualified Data.Text.Lazy as T
+
+sanitizeHtml :: Html () -> Html ()
+sanitizeHtml = toHtmlRaw . renderTree . transformTree sanitizeTree . parseTree . renderText
+
+sanitizeTree :: TagTree T.Text -> [TagTree T.Text]
+sanitizeTree = pure