𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 #𝟮𝟭 𝘁𝗼 #𝟯𝟬: 𝗩𝗲𝗲𝗹𝘃𝗼𝗼𝗿𝗸𝗼𝗺𝗲𝗻𝗱𝗲 𝗳𝗼𝘂𝘁𝗲𝗻

PHP laat je fouten maken zonder waarschuwing. Het blijft vaak doorgaan, zelfs als er iets misgaat. Dit leidt tot stille gegevenscorruptie of beveiligingslekken.

Hier zijn 10 kritieke bugs die je moet vermijden:

  • Multibyte-tekst strlen() telt bytes, geen tekens. Dit verstoort Hindi- of emoji-tekst. Gebruik in plaats daarvan mb_strlen().

  • Niet-gevalideerde API-aanroepen file_get_contents() kan stilletjes falen. json_decode() kan null retourneren. Controleer altijd of de respons false is en verifieer json_last_error().

  • Tijdelijke cookies setcookie() zonder vervaldatum verwijdert de cookie zodra de browser wordt gesloten. Stel een vervaltijd in en gebruik de httponly-flag om XSS-aanvallen te voorkomen.

  • Onveilige bestandsuploads Het controleren van bestandsextensies is niet voldoende. Hackers hernoemen shell.php naar shell.jpg. Gebruik finfo_file() om het werkelijke MIME-type te controleren.

  • Rekenen met geformatteerde strings PHP stopt met het lezen van getallen bij een komma. "1,299.00" wordt 1. Verwijder komma's met str_replace() voordat je gaat rekenen. Sla ruwe getallen op in je database.

  • Gedeelde statische eigenschappen Statische eigenschappen behoren tot de klasse, niet tot het object. Elke instantie deelt dezelfde gegevens. Gebruik gewone public eigenschappen voor gebruikersspecifieke gegevens.

  • Redirects zonder exit header("Location: ...") stuurt alleen een instructie naar de browser. De server blijft het script uitvoeren. Roep altijd exit() aan na een redirect.

  • SQL-injectie Het direct in query-strings plaatsen van variabelen stelt hackers in staat je database te controleren. Gebruik prepared statements met PDO.

  • Geheugencrashes file_get_contents() laadt volledige bestanden in het RAM-geheugen. Dit laat je server crashen bij grote bestanden. Gebruik fopen() en fgets() om bestanden regel voor regel te lezen.

  • Stille databasefouten PDO blijft standaard stil. Fouten retourneren false in plaats van exceptions te gooien. Stel PDO::ATTR_ERRMODE in op PDO::ERRMODE_EXCEPTION.

De oplossing is simpel: wees expliciet. Controleer elke retourwaarde. Valideer elke input. Ga er nooit vanuit dat een functie is geslaagd.

Volledig artikel: https://dev.to/bikkisingh/php-bugs-21-to-30-common-mistakes-every-php-developer-must-knowpublished-5hbp