- Log ind eller Opret konto for at kommentere
- Anmeld denne kommentar
Det er en god disclosure politik. Vi bør kopiere den.
Med hensyn til den fundne bug vil jeg slå et slag for en mere moderne måde at udvikle sites. Og det er at lade browseren overtage meget af det arbejde, som tidligere blev udført af serveren. Meget logik udføres i JavaScript og med DOM manipulering, hvilket i stor stil medfører at html entity encoding problematikken ikke er relevant.
Serveren har statiske html filer. Disse filer ændres ikke ud fra brugerinput og de skal ikke behandles af et server sprog som PHP. De skal bare ligge som statiske filer ligesom billeder etc.
Alt dynamisk indhold kommer via et API som leverer JSON data til klienten. Her vil det være en fordel hvis man ikke forfalder til at lave JSON manuelt på serveren. I stedet bruger du et bibliotek, der konverterer et objekt til JSON, uden mulighed for at det kan snydes til at lave falsk JSON.
Fordi der kører et lille program i browseren, så kan mange ting løses direkte og nemmere. Eksempelvis hvis du har trin 1, 2 og 3 i en bestillingsprocess, som førhen kræver at data fra trin 1 sendes til serveren så at den kan generere html til trin 2. I stedet er disse data gemt i lokale variabler og der er måske ikke engang noget kommunikation med serveren, før at sidste trin er gennemført. Der er hellere ikke brug for cookies eller en session id, som overføres med hvert kald til serveren.
Et eksempel: https://gigabit.dk/tjek.html#Snehvidevej 2, 2730 Herlev
Først når du går til betalingssiden bliver der kommunikeret med serveren og det er for at gemme det indtastede inden at brugeren sendes til en tredjepartsside (betalingsgatewayen). Endvidere er tjek.html en statisk fil og adressen bliver tjekket via API kald.
Du kan proppe alle de HTML tags og entities ind i URL'en som du har lyst til. Koden der indsætter adressen på siden, der hvor der står "valgt adresse", gør absolut ingen forsøg på at escape det. Det er ikke nødvendigt. Browseren fortolker ikke tekst der ændres med et funktionskald direkte i DOM træet.
Hvis du ikke kan lide Java_Script, så findes der mange andre sprog som kan oversættes til Java_Script. Og snart også Web Assembly. Selv bruger jeg Scala-JS http://www.lihaoyi.com/hands-on-scala-js/