Kontrollera och tvätta indata
Lita aldrig på det som kommer från ett formulär. Kontrollera att det finns och gör det ofarligt innan du skriver ut det.
Tre kontroller
Allt som kommer från besökaren kan vara tomt, felaktigt eller skadligt. Gör alltid de här tre sakerna:
1. Kontrollera att formuläret är skickat
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
2. Kontrollera att värdet finns
if (isset($_POST['namn'])) {
3. Tvätta värdet innan det skrivs ut
$namn = htmlspecialchars($_POST['namn']);
Varför tvätta?
Om du skriver ut indata direkt kan besökaren skicka in egen HTML och JavaScript som körs på din sida. Det kallas Cross-Site Scripting (XSS). htmlspecialchars() gör om tecken som < och > till ofarlig text.
Prova: kör koden och skicka in den förifyllda texten. Den första utskriften är otvättad och den andra är tvättad.
Den otvättade raden körde skriptet och visade en ruta. Den tvättade raden visar bara texten. Titta i Visa sidkälla för att se hur tecknen har gjorts om.
Prova själv
- Skicka in
<h1>Stor text</h1>. Vad händer på de två raderna? trim()tar bort mellanslag i början och slutet. Skicka in ett namn med mellanslag före och efter, och jämför i sidkällan.- Lägg till en kontroll som skriver “Du måste ange ett namn” om fältet är tomt. Tips:
$tvattad === "".
Regeln är enkel: allt som kommer utifrån ska tvättas innan det skrivs ut på en sida.