Je crois que dans votre cas, vous devez vous en tenir à "Echapper à toutes les entrées fournies par l'utilisateur".
Cette technique est généralement utilisée en dernier recours. La validation d'entrée est probablement un meilleur choix car cette méthodologie est fragile comparée à d'autres défenses et nous ne pouvons pas garantir qu'elle empêchera toute injection SQL dans toutes les situations.
Cette technique consiste à échapper à l'entrée de l'utilisateur avant de l'insérer dans une requête. Il est très spécifique à la base de données dans sa mise en œuvre. Il est généralement recommandé de modifier le code existant uniquement lorsque la validation des entrées n'est pas rentable. Les applications créées à partir de zéro ou les applications nécessitant une faible tolérance au risque doivent être créées ou réécrites à l'aide de requêtes paramétrées, de procédures stockées ou d'une sorte de Object Relational Mapper (ORM) qui génère vos requêtes pour vous.
Cette technique fonctionne comme ceci. Chaque SGBD prend en charge un ou plusieurs schémas d'échappement de caractères spécifiques à certains types de requêtes. Si vous quittez alors toutes les entrées fournies par l'utilisateur en utilisant le schéma d'échappement approprié pour la base de données que vous utilisez, le SGBD ne confondra pas cette entrée avec le code SQL écrit par le développeur, évitant ainsi les éventuelles vulnérabilités d'injection SQL.
En cas si PostGres vous pouvez utiliser les guillemets dollar
https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING