slogan3

JavaScript Veiligheidspraktijken en Secure Coding

description

Met deze prompt krijg je gerichte uitleg over beveiligingsrisico's in JavaScript en praktische tips om kwetsbaarheden te voorkomen. Dit helpt je om veiligere webapplicaties te bouwen en beveiligingsproblemen vroegtijdig te signaleren, wat beter is dan alleen algemene programmeertips.

prompt

Help me begrijpen hoe ik mijn JavaScript-code veiliger kan maken. Leg uit welke beveiligingsrisico's er zijn, zoals XSS, CSRF en code-injectie, ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk, ik help je graag om je JavaScript-code en webapplicatie veiliger te maken. Hieronder leg ik uit welke beveiligingsrisico's er zijn en hoe je ze kunt voorkomen, met voorbeelden gerelateerd aan je situatie. 1. Cross-Site Scripting (XSS) Wat is het? XSS gebeurt wanneer kwaadaardige scripts worden ingebracht in je webpagina, meestal via invoer van gebruikers, en vervolgens worden uitgevoerd door andere gebruikers. Dit kan leiden tot datadiefstal, sessie-kaping, of het manipuleren van de inhoud. Hoe voorkom je het? - Escape of encodeer gebruikersinvoer voordat je deze in de DOM plaatst. - Gebruik geen innerHTML zonder sanering. - Gebruik DOM-manipulatie methoden zoals createElement en textContent, die automatisch tekst ontsmetten. Jouw codevoorbeeld: ```javascript function submitComment(comment) { document.getElementById('comments').innerHTML += `<p>${comment}</p>`; } ``` Veilige aanpak: ```javascript function submitComment(comment) { const commentsDiv = document.getElementById('comments'); const p = document.createElement('p'); p.textContent = comment; // zorgt dat speciale tekens niet worden geïnterpreteerd als HTML commentsDiv.appendChild(p); } ``` 2. Cross-Site Request Forgery (CSRF) Wat is het? CSRF probeert een gebruiker onbedoeld acties te laten uitvoeren op een website waarop hij ingelogd is, door misbruik te maken van de ingelogde sessie. Hoe voorkom je het? - Gebruik CSRF-tokens in formulieren en controleer deze op de server. - Vereis dat mutatie-requests (zoals plaatsen van comments) via POST gaan en dat je een token meestuurt dat je verifieert. 3. Code-injectie Wat is het? Code-injectie gebeurt wanneer kwaadaardige code (zoals scripts) wordt geïnjecteerd via invoer en uitgevoerd op de pagina. Hoe voorkom je het? - Ontsmet alle invoer. - Gebruik geen innerHTML zonder sanering. - Gebruik altijd tekstContent of textNode voor gebruikersinput. Samengevat: - Gebruik DOM-methoden zoals createElement en textContent voor het toevoegen van gebruikersinput. - Saniteer alle invoer. - Implementeer CSRF-beveiliging op de server. - Gebruik HTTPS om dataverkeer te beveiligen. Kort voorbeeld: ```javascript function submitComment(comment) { const commentsDiv = document.getElementById('comments'); const p = document.createElement('p'); p.textContent = comment; // ontsmet de input commentsDiv.appendChild(p); } ``` Wil je dat ik je help met het aanpassen van je volledige code of meer details geef over server-side beveiliging?
provider: deepseek
model: deepseek-chat
Je huidige code bevat een kritiek beveiligingsprobleem: **XSS (Cross-Site Scripting)**. Hier zijn de belangrijkste beveiligingsrisico's en oplossingen: ## 1. XSS (Cross-Site Scripting) **Probleem**: Je gebruikt `innerHTML` met onbetrouwbare gebruikersinput, waardoor kwaadaardige scripts kunnen worden uitgevoerd. **Oplossing**: ```javascript function submitComment(comment) { const commentsDiv = document.getElementById('comments'); const newParagraph = document.createElement('p'); newParagraph.textContent = comment; // Veilig: textContent in plaats van innerHTML commentsDiv.appendChild(newParagraph); } ``` ## 2. CSRF (Cross-Site Request Forgery) **Risico**: Aanvallen waarbij gebruikers onbedoelde acties uitvoeren. **Preventie**: ```javascript // Gebruik CSRF-tokens in formulieren fetch('/api/comments', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getCSRFToken() // Token uit meta tag of cookie }, body: JSON.stringify({ comment: comment }) }); ``` ## 3. Code/Command Injectie **Risico**: Uitvoeren van onbedoelde code of commando's. **Preventie**: ```javascript // Server-side validatie (Node.js voorbeeld) function sanitizeInput(input) { return input.replace(/[<>"'&]/g, ''); // Verwijder gevaarlijke karakters } // Gebruik parameterized queries voor databases const query = 'INSERT INTO comments (text) VALUES (?)'; db.execute(query, [sanitizedComment]); ``` ## Aanvullende beveiligingstips: - **Content Security Policy (CSP)** headers implementeren - **Input validatie** zowel client-side als server-side - **HTTPS** verplichten voor alle requests - **Regelmatige dependency updates** voor externe libraries **Belangrijkste regel**: Vertrouw nooit gebruikersinput en gebruik altijd context-specieke escaping/sanitization voordat je data weergeeft of verwerkt.