Hvordan Sanitize Data for XSS PHP

XSS er et sikkerhetsproblem i web-applikasjoner som er utnyttet av hackere å få tilgang til en brukers personlige opplysninger, for å etterligne en annen bruker, eller for å få tilgang til en webserver med utvidede rettigheter. Sett opp forholdsregler for PHP programmer for å rense brukerundersøkelser for å forhindre XSS-angrep.

Bruksanvisning

1 Bruk "htmlspecialchars" -funksjonen for å rense ekstern inngang der du kan tillate HTML markup i input. Kaller funksjonen for å erstatte "mindre enn" og "større enn" tegn med HTML-koder "& lt;" og "& gt;" å hindre et forsøk på å injisere en ondsinnet skript med "<script>" tag. For eksempel:

ekko htmlspecialchars ($ userinput);

2 Sett "striptags" funksjon for å fjerne HTML-koder der ingen HTML markup ville bli tillatt. Ikke bruk "striptags" i tilfeller hvor rettmessig bruk av HTML skulle få lov, eller det kan føre til tap av data. For eksempel:

echo "Kan ikke logge inn med brukernavnet". striptags ($ _ GET [ 'brukernavn']); // Ingen HTML-kode er tillatt i et brukernavn

3 Bruk doble anførselstegn for å omgi HTML-attributter som involverer brukerundersøkelser. Før "ENT_QUOTES" parameter til "htmlspecialchars" -funksjonen. Dette gir ekstra beskyttelse mot angrep som vil utnytte injisere koden i HTML-attributter som bruker enkelt i stedet for doble anførselstegn. For eksempel:

<img src = "loaded.png" alt = "<? php echo htmlspecialchars ($ USER_DESCRIPTION, ENT_QUOTES);?> '/>

<img src = "loaded.png" alt = "<? php echo htmlspecialchars ($ user

beskrivelse);?>" />

4 Kaller "urlencode" -funksjon for maksimal beskyttelse i desinfiserende data som kan vises som en HTML-attributt. Det tar en mer aggressiv tilnærming til å konvertere potensielt skadelige tegn. For eksempel:

<Input type = "text" value = "<? Php echo urlencode ($ user_input);?>" />

5 Utnytte "mysqlrealescapestring" -funksjonen for å rense innspill før den brukes i databaseoperasjoner med "mysql" forlengelse for å hindre SQL-injeksjon angrep. For eksempel:

$ Query = "SELECT * FROM data HVOR usercriteria =" 'mysqlrealescapestring ($ usercriteria).. "';

6 Bruk "mysqli" forlengelse i stedet for "mysql" sammen med preparerte uttalelser å ha filtypen flukt brukerundersøkelser for deg og hindre SQL-injeksjon angrep. For eksempel:

$ Stmt = $ mysqli-> forberede ( "SELECT * FROM data HVOR usercriteria =?");
$ Stmt-> bind_param ( 's', $ usercriteria);
$ Stmt-> utføre ();