Säkra din PHP-kod
- Det är viktigt att säkerställa säker data från användare (formulär och webbadresser etc) förutom OS-servern och http-servern, främst på grund av webbangrepp.
- Det finns 3 kategorier för att säkra din php-kod:
Validerar datanvändarna
När webbplatsen erbjuder formulär som gör det möjligt för användare att fånga och skicka innehåll, är det inte tillräckligt att ange formatet för poster (e-postadress, telefonnummer, antal produkter) Servern bör också övervakas (t.ex. PHP) om uppgifterna är konventionell till vår förväntan. Om du tar hänsyn till hela tal, konvertera alla data som skickas av användaren:
Validera data från webbadress eller formulär
Nästan alla mottagna data är från webbadressen eller formulären som webbansvarig har ställt in. Nästan alla URL-visningsparametrar som anges nedan:
/index.php?rub=25
Denna parameter bör dock inte ändras. Men det här är möjligt enligt nedan:
/index.php?rub=0 /index.php?rub=index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+eller+1
- Det är viktigt att kolla om formatet som tas emot via webbadressen eller formuläret förväntas oavsett vilken typ av data som helst.
- Du kan använda funktionen filter_input () för att verifiera samma.
- Om du till exempel fått ett e-postmeddelande från en användare från formatposten med fältnamn som e-postadress. Du kan återställa samma genom att:
$ email = filter_input (INPUT_POST, "email", FILTER_VALIDATE_EMAIL); om ($ email) {// E-postadressen är verkligen ett mailadressformat}
Denna funktion kan filtrera många saker: IP-adress, URL etc. Det kan vara modifieringar som kodningssträng innan du skickar via URL som process av htmlentities ().
- Flera filter kan kombineras med "|" .
- För att validera en IP-adress endast under Ipv4-format:
$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);
Klicka på följande länk för filter:
//www.php.net/filter
Hoppa över visat innehåll i webbadressen
När innehållet som användaren har angett visas på skärmen innehåller det HTML- eller JavaScript-kod, vilket gör skyddet obligatoriskt.
Om innehållet som ska visas i html: du måste HTMLenkoda inställningen för att konvertera alla tecken i motsvarande HTML-enheter. Nedan är php-funktionen för att automatisera denna process:
echo htmlentities ($ _ REQUEST ['content']);
Om innehållet ska visas i en webbadress: du måste urlänka innehållet.
PHP har två funktioner för att göra detta kodning: urlencode () och rawurlencode (). Skillnaden mellan dessa två funktioner är kodningen av ett område, som i den första funktionen ger och ger% 20 och "+" i den andra.
echo '//www.website?valeur='.urlencode($_REQUEST['value']);
Om innehållet ska lagras i en databas: det är nödvändigt att undvika alla tecken med en viss roll i den databasserver som används. För PHP och MySQL, gör funktionen mysql_escape_string () alla potentiellt skadliga tecken i strängen som passerat som parameter.
$ query = 'VÄLJ ID FROM matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['användare']). '' ';
Observera att servern är konfigurerad med PHP-alternativ magic_quotes, data som överförs av användare skyddas automatiskt med backslashes (backslash). För att skydda mysql_escape_string måste du "ångra" detta grundläggande skydd:
$ query = 'VÄLJ ID FROM mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['användare'])). '' ';