Ik heb een error handler en dat loopt goed. Je kunt mooi en handig via email op fouten gewezen worden. Maar er is een maar....
In de email worden alle variabelen, met hun waardes op moment van error, gezet. Dat is mooi maar ook de wachtwoorden en inlog van je formulier EN de inlog van de Database. Wat kan je doen om deze gevoelige informatie niet mee te nemen in de error afhandeling?
Alvast bedankt,
Wim
<?php
function mijn_errors($e_nummer, $e_melding, $e_bestand, $e_regel, $e_vars)
{
//hier komt dan die "unset" Maar de gewraakte variabelen komen volgens mij mee in //$e_vars. Ik behandel deze $e_vars dan als een array?
//Dus dan wordt het als voorbeeld:
unset ($e_vars['gebruiker']; $e_vars['wachtwoord']); // Ja? Nee?
// of als de inlog in een array staat
unset ($e_vars[$a_inlogdata]) // $a_inlogdata, niet tussen quotes?
Het unsetten van variabelen komt mij over als een soort van blacklist. Het nadeel van blacklists is dat je gevallen kunt vergeten (en daarmee je blacklist effectief tekortschiet in haar doel).
Daarnaast lost dit het achterliggende probleem niet op. Blijkbaar komt er (verkeerde?) informatie bij de verkeerde persoon/personen terecht. Je zult je ontwerpstrategie zo moeten aanpassen dat uitvoer van enige foutafhandeling niet bij (willekeurige) eindegebruikers terechtkomt.
Andere oplossingen, zoals het geval-per-geval afvangen van dit soort informatie, lijken mij toch doekjes voor het bloeden.
Dat laatste denk ik zelf ook.
Als je de variabelen declareert... dan zie je wel eens dat ze tussen " " aanhalingstekens staan heeft dat ook effect op mijn probleem?
Ik ga nu dit eens uitproberen maar toch graag je mening
<?php
//zonder variabelen te declareren dan moeten ze ook niet in het rapport komen?
$db_connectie =
mysqli_connect ("host", "user", "pass", "db")
or
die("Onze verontschuldigingen, de Kaartenbak is niet online.");
?>
Zou dit een oplossing kunnen zijn?
Alsjeblieft niet, zeg. Fouten in de foutafhandeling moet je in de foutafhandeling zelf oplossen. Je gaat niet elders goede werkende code aanpassen omdat je foutafhandeling niet deugt.
In een custom error handler is de 5e parameter $errcontext, die met alle variabelen, helemaal niet vereist. Je kunt die er dus ergens uithalen. Dan houd je meestal al voldoende informatie over om de fout te verhelpen (zoals foutcode, foutmelding en het bestand waarin de fout optrad).
Fouten e-mailen is meer in het algemeen geen goed plan. Daar kom je van terug bij de eerste DDoS-aanval...