𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 #𝟮𝟭 𝘁𝗼 #𝟯𝟬: 𝗩𝗲𝗲𝗹𝘃𝗼𝗼𝗿𝗸𝗼𝗺𝗲𝗻𝗱𝗲 𝗳𝗼𝘂𝘁𝗲𝗻
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 daarvanmb_strlen().Niet-gevalideerde API-aanroepen
file_get_contents()kan stilletjes falen.json_decode()kannullretourneren. Controleer altijd of de responsfalseis en verifieerjson_last_error().Tijdelijke cookies
setcookie()zonder vervaldatum verwijdert de cookie zodra de browser wordt gesloten. Stel een vervaltijd in en gebruik dehttponly-flag om XSS-aanvallen te voorkomen.Onveilige bestandsuploads Het controleren van bestandsextensies is niet voldoende. Hackers hernoemen
shell.phpnaarshell.jpg. Gebruikfinfo_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
publiceigenschappen voor gebruikersspecifieke gegevens.Redirects zonder exit
header("Location: ...")stuurt alleen een instructie naar de browser. De server blijft het script uitvoeren. Roep altijdexit()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. Gebruikfopen()enfgets()om bestanden regel voor regel te lezen.Stille databasefouten PDO blijft standaard stil. Fouten retourneren
falsein plaats van exceptions te gooien. StelPDO::ATTR_ERRMODEin opPDO::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