“Implicaties applicatieconfiguratie opslaan in PHP constanten?”

Hieronder mijn antwoord dat ik voor iemand geschreven heb die mij de volgende vraag stelde:

“Is het wijs om de applicatieconfiguratie op te slaan in constanten, in plaats van in een array?”

Het voordeel van het opslaan van waardes in constanten is dat deze na de definitie hiervan niet meer kunnen worden aangepast. In dat opzicht lijkt het een goede idee om de configuratie via deze weg op te slaan.

Echter heeft het gebruik van constanten ook een aantal nadelen:

  1. Een opgeslagen wachtwoord in een constante kan je niet verwijderen met unSet(), bijvoorbeeld nadat je een databaseconnectie hebt gemaakt. Het is daarom veiliger om na het eenmalig gebruik hiervan deze te verwijderen uit de configuratie.Veel op maat gemaakte debugfuncties maken een print van de $GLOBALS array, of van de gedefinieerde constanten. Mocht een dergelijke debugfunctie actief zijn op de webserver, dan worden wachtwoorden geprint met ernstige gevolgen. Beter is het dus om direct na gebruik het wachtwoord te verwijderen.
  2. Constanten zijn onhandig in gebruik. Je kunt geen speciale array functies gebruiken, zoals for(), forEach() en de array*() functies. Array functionaliteit is flexibel en kan erg handig zijn in het debugproces, door bijvoorbeeld alle configuratiewaarden weer te geven.

In de praktijk komt het eigenlijk niet voor – tenzij je een serieuze bug in je applicatie hebt – dat de configuratiewaarden worden aangepast. Daarom adviseer ik ook om de configuratie in een hiërarchische array op te slaan.

About Sijmen Ruwhof

Independent IT Security Researcher / Ethical Hacker
This entry was posted in PHP, PHP security. Bookmark the permalink.