raw()
Marque une chaîne HTML comme fiable. Utilisez cette échappatoire uniquement sur du contenu que vous contrôlez ou avez assaini.
Signature#
raw(value: string) retourne un RawString, utilisable comme contenu ou comme valeur d’attribut.
raw(value: string): RawStringUtilisation#
Dans le contenu, raw() désactive l’échappement et insère la chaîne telle quelle. Les autres chaînes restent du texte échappé.
import { raw } from "@vincle/core";
<div>{raw(await renderMarkdown(post.body))}</div>;<div>{raw(DOMPurify.sanitize(userInput))}</div>;
// ❌ XSS if userInput contains <script>alert(1)</script><div>{raw(userInput)}</div>;// ✅ Vincle escapes by default<div>{userInput}</div>;Dans un attribut#
Dans un attribut, les guillemets restent protégés pour conserver la structure HTML, mais raw() désactive notamment le filtrage des schémas d’URL. Ne l’utilisez pas sur des données non fiables.
<a href={raw("javascript:go()")}>x</a>; // href="javascript:go()"<a title={raw('" onmouseover="alert(1)')}>x</a>; // title="" onmouseover="…"dangerouslySetInnerHTML#
dangerouslySetInnerHTML est une forme de compatibilité pour insérer du HTML de confiance. L’application est responsable de l’assainissement préalable.
<div dangerouslySetInnerHTML={{ __html: "<b>bold</b>" }} />rawUrl() : une frontière de confiance plus étroite#
rawUrl() permet un schéma d’URL que le filtre bloque normalement, tout en conservant l’échappement de la valeur. Il convient aux protocoles applicatifs explicitement approuvés.
import { rawUrl } from "@vincle/core";
<a href={rawUrl("phpstorm://open?file=src/app.ts")}>open in the IDE</a>;raw() et rawUrl()#
Pour une URL approuvée, préférez rawUrl(). Pour du balisage HTML, raw() autorise une insertion bien plus large et nécessite un contrôle du contenu.
Voir aussi#
Consultez le modèle de sécurité et auditez les appels à raw() dans votre application.