Beste,
ik heb ooit eens gehoord dat $_GET kan beveiligen, nou is mijn vraag, hoe doe ik dat?
Alvast bedankt,
FrankY
Beste,
ik heb ooit eens gehoord dat $_GET kan beveiligen, nou is mijn vraag, hoe doe ik dat?
Alvast bedankt,
FrankY
Zoiets dacht ik kijk zelf even op de bovenstaande link dan leer je er ook nog eens wat van
Beste ik weet niet wat je exact bedoelt maar er is een heel stuk waarmee je $_GET kan beveiligen.
<?php
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);
?>
Toon Meer
Hopelijk heb je er iets aan.
Mvg PG
@pg
Als je mysql niet gebruikt krijgt mysql_real_escape_string een error (tenminste vroeger) dus daarom kan je beter add_slashes gebruiken.
Citaat@pg
Als je mysql niet gebruikt krijgt mysql_real_escape_string een error (tenminste vroeger) dus daarom kan je beter add_slashes gebruiken.
Als je het zo bekijkt inderdaad wel ja.
Ik weet niet of dit nog altijd is maar wss wel.
Tnx Niels
Mvg PG
Hier worden enkele 'algemene' oplossingen gegeven. Maar in mijn ogen zijn deze oplossingen slordig en niet goed. Ze zijn zeker niet altijd veilig.
Een GET, POST of COOKIE variabele moet je valideren naar wat je van de variabele verwacht. Moet de variabele een getal zijn, kijk dan of het ook een getal is. Moet de variabele een geldige link zijn, kijk daar dan na. Er is geen algemene oplossing om alle GET waardes in één keer te beveiligen. Daarnaast is overal slashes overheen gooien slordig. Tenslotte, als iets over de mail gaat (bijvoorbeeld), moet de variabele helemaal geen slashes kennen.
En mysql_real_escape_string is niet bruikbaar wanneer er geen mysql resource is omdat mysql_real_escape_string rekening houd met de encoding van de database..
Dus: Valideren doe je aan de hand van het (verwachte) type input. En niet met een algemene functie...
CitaatToon MeerHier worden enkele 'algemene' oplossingen gegeven. Maar in mijn ogen zijn deze oplossingen slordig en niet goed. Ze zijn zeker niet altijd veilig.
Een GET, POST of COOKIE variabele moet je valideren naar wat je van de variabele verwacht. Moet de variabele een getal zijn, kijk dan of het ook een getal is. Moet de variabele een geldige link zijn, kijk daar dan na. Er is geen algemene oplossing om alle GET waardes in één keer te beveiligen. Daarnaast is overal slashes overheen gooien slordig. Tenslotte, als iets over de mail gaat (bijvoorbeeld), moet de variabele helemaal geen slashes kennen.
En mysql_real_escape_string is niet bruikbaar wanneer er geen mysql resource is omdat mysql_real_escape_string rekening houd met de encoding van de database..
Dus: Valideren doe je aan de hand van het (verwachte) type input. En niet met een algemene functie...
Maar wat nou, als je beide kan verwachten? Bijvoorbeeld bij een zoek formulier waar je $_GET ipv $_POST variables gebruikt.. dan heb je daar weer een probleempje voor. En de ts zoekt denk ik 1 makkelijke oplossing voor bijvoorbeeld bovenstaand probleem.
Ikzelf heb een eigen functie gemaakt (Es2008($str) staat voor Everything Safe 2008 :P, en die werkt tot nu toe aardig..)
Het beste is gewoon zelf overal addslashes zetten of htmlentities waar je denkt dat het echt van toepassing is (bv. in een query) zo ga je geen onnodige variabelen filteren en minder fouten hebben wat de snelheid en ordelijkheid van je script min of meer zal bevorderen.
-
-
@Killingdevil#reactie 1
Volgens mij weet ik wel wat ik doe. htmlentities is voor output niet voor input (in de database mag dus best een < of > staan ;)). Het valideren van user input moet sowieso maar doormiddel van add slashes voorkom je ten eerste al redelijk wat aangezien html tags in de database niks uit maken zoals ik al eerder heb verteld hierboven.
@Killingdevil#reactie 2
Uhm als je toch beide wilt nemen kun je net zo goed $_REQUEST gebruiken.
Heb je nog geen account? Registreer je nu en word deel van onze community!