javascript / expert
Snippet
Defensive Programmierung mit Tagged Templates
Tagged Templates ermöglichen das Abfangen der Verarbeitung von Template-Literalen. Dieses 'Experten'-Muster ist entscheidend für den Aufbau von Domain Specific Languages (DSLs) oder Sicherheitsschichten, die Eingaben automatisch bereinigen, bevor sie sensible Ziele wie HTML oder SQL erreichen.
snippet.js
1
2
3
4
5
6
7
8
9
10
function safeHTML(strings, ...values) {return strings.reduce((acc, str, i) => {const val = String(values[i] || '').replace(/[&<>"]/g, c => ({'&':'&','<':'<','>':'>','"':'"'}[c]));return acc + str + val;}, '');}const userInput = '<img src=x onerror=alert(1)>';const message = safeHTML`<div>User says: ${userInput}</div>`;console.log(message);
nodejs
Erklärung
1
function safeHTML(strings, ...values)
Eine Tag-Funktion, die rohe String-Fragmente und die interpolierten Werte getrennt erhält.
2
values[i].replace(/[&<>"]/g, ...)
Escaped Sonderzeichen innerhalb der Werte aggressiv, um Injection-Angriffe zu verhindern.
3
safeHTML`... ${userInput}`
Ruft den Sanitizer-Tag auf und stellt sicher, dass der resultierende String sicher für das Rendering ist.