Ik heb een scriptje gevonden voor beveiliging van de $_POST.
Maar ik kom er niet uit hoe ik de waardes van de inputs weer terug krijg.
De afzonderlijke $_POST worden daarna gecontroleerd.
Ik gebruik overigens geen normale database.
Iemand die me een zetje kan geven in de goede richting?
Ik heb nu oa:

$username	= $_POST['username'];
$email_address	= $_POST['email_address'];


function beveilig($sInput) {
        $sOutput = '';
        if(!get_magic_quotes_gpc() == 0) {
                $sOutput = $sInput;              
        } else {
                if(function_exists('mysql_real_escape_string')) {
                        $sOutput = mysql_real_escape_string($sInput);     
                } else {
                        $sOutput = addslashes($sInput);         
                }
        }
        $sOutput = htmlentities($sOutput, ENT_QUOTES);
        return $sOutput;
}
function beveilig_array($aInput) {
        if(!is_array($aInput)) {
                return false;
        }
        $aOutput = array();
        foreach($aInput as $iKey => $sValue) {
                if(is_array($sValue)) {
                        $aOutput[beveilig($iKey)] = beveilig_array($sValue);            
                } else {
                        $aOutput[beveilig($iKey)] = beveilig($sValue);
                }
         }
        return $aOutput;
}

$_POST = beveilig_array($_POST);
Welk script bedoel je eigenlijk?
Die beveilig() functie is in deze tijd volledig onnodig:
- mysql_real_escape_string is al verouderd
- addslashes doet het juist verkeerd
- en een controle op get_magic_quotes_gpc is niet meer nodig, omdat deze (kansloze) functie er al sinds PHP 5.4 uit is gesloopt.


Gebruik gewoon netjes: mysqli_real_escape_string() in je queries, waar je aanpasbare variabelen in verwerkt.
Denk aan $_GET, $_POST, $_COOKIE en $_ENV.

Of verdiep je in Prepared Statements in MySQLi of PDO. Dan hoef je het zelf niet meer te escapen, en doet de classe het zelf.
oke, duidelijk Arien..
Bedankt voor de reacties.
Kan weer even verder.
- Ariën - op 09/08/2017 16:42:35
Of verdiep je in Prepared Statements in MySQLi of PDO. Dan hoef je het zelf niet meer te escapen, en doet de classe het zelf.

Tenzij je dit principe verkeerd toepast (rechtstreeks concateneren van $_GET en $_POST in SQL), wat nogal eens gebeurt.

Het moment dat je stopt met nadenken over de veiligheid van code is meestal het moment dat je code vatbaar wordt voor misbruik. Simpelweg omdat je gebruik maakt van prepared statements maakt je code niet ineens per definitie immuun voor SQL-injectie of wat dan ook...

Brute force ga je tegen door:
- CSRF-tokens
- stop het hele ding achter een login?

Daarnaast helpt het ook om orde te scheppen in je code door het scheiden van de stappen van formuliergebruik: het weergeven, posten, en een eventuele bedankpagina na afloop - stop deze alle in code die apart behandeld wordt (hetzij methoden, hetzij aparte PHP-bestanden). Maak gebruik van de POST/redirect/GET aanpak.

PS: over sitemasters: lees ook ff alle reacties. Daar kun je doorgaans ongeveer bepalen hoe oud (en dus meestal ook hoe relevant) een tutorial (nog) is en of de voorgestelde methodiek ook echt hout snijdt (wat hier absoluut niet het geval is).

Reageren