Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 22-02-2004, 17:43
Martin
Avatar van Martin
Martin is offline
Iedereen streeft naar een optimale beveliging van zijn of haar PHP-scripts (tenminste, dat mag ik toch hopen). Maar hoe realiseer je een zo veilig mogelijk script? Ja, je kan bovenin het PHP-bestand een exit; plaatsen, dan is hij inderdaad veilig, maar niet echt gebruiksvriendelijk.

Nu komt mijn vraag:

Waarop moet ik allemaal extra letten bij de beveiliging van mijn pagina's? SQL-query's moet je natuurlijk beveiligen met de mysql_real_escape_string()-functie, maar aan wat voor dingen moet ik nog meer denken?
Met citaat reageren
Advertentie
Oud 22-02-2004, 17:53
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
variabelen initialiseren.
Met citaat reageren
Oud 22-02-2004, 17:54
Martin
Avatar van Martin
Martin is offline
Citaat:
Fade of Light schreef op 22-02-2004 @ 18:53:
variabelen initialiseren.
?
Met citaat reageren
Oud 22-02-2004, 18:04
Verwijderd
de #1-rule is toch wel:
Never trust user input
Met citaat reageren
Oud 22-02-2004, 18:05
Martin
Avatar van Martin
Martin is offline
Citaat:
eddie schreef op 22-02-2004 @ 19:04:
de #1-rule is toch wel:
Never trust user input
Duh

Maar hoe kan je dit soort invloeden het beste beveiligen? M.a.w., welke functies zijn het meest geschikt en op welke manier?
Met citaat reageren
Oud 22-02-2004, 22:59
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
htmlentities() is wel goed bruikbaar: je wil geen malafide HTML/JavaScript in ingezonden text/code hebben. Verder zorgen dat als je includes op .inc eindigen ook daadwerkelijk aan PHP gerelateerd zijn zodat de source niet openstaat, en gewoon in het algemeen je user input heel erg goed checken. Er zijn weinig specifieke regels te bedenken omdat het toch erg van je applicatie afhangt.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 22-02-2004, 23:17
Screaming Slave
Screaming Slave is offline
Citaat:
Martin schreef op 22-02-2004 @ 18:54:
?
int c = 0;
++c;

ipv

int c;
++c;

in hoeverre dit bij php nodig is, weet fade of light beter dan ik.
Met citaat reageren
Oud 23-02-2004, 00:47
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
In PHP hoef je variabelen niet te declareren of te typecasten, maar het initialiseren van variabelen is wel heel netjes, maar niet altijd nuttig. Als Register Globals UITstaat zoals dat braaf hoort, zie ik het nut van variabelen initen niet echt in, de gebruiker heeft er dan geen enkele invloed op. Behalve als je met user input gaat werken natuurlijk, maar dat spreekt voor zich. Als je je houdt aan het escapen van strings in SQL queries, Register Globals uitschakelt en de gouden regel onthoudt (zie eddie) dan ben je in principe een heel eind.

Dat je moet oppassen met exec() spreekt verder voor zich.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 23-02-2004, 08:40
Martin
Avatar van Martin
Martin is offline
Citaat:
Enlightenment schreef op 23-02-2004 @ 01:47:
Dat je moet oppassen met exec() spreekt verder voor zich.
Exec()?
Met citaat reageren
Oud 23-02-2004, 09:44
TIGEK
TIGEK is offline
http://nl.php.net/exec

Dus het uitvoeren van programma's op de server
__________________
Laptops zijn net vrouwen. Je moet er voor zichtig mee omgaan als je iets fout doet is het heel gevaarlijk.
Met citaat reageren
Oud 23-02-2004, 10:32
Verwijderd
Wat is de beste (veiligste manier) om een string te escapen (ed) om 'm veillig in een database weg te stoppen?
Met citaat reageren
Oud 23-02-2004, 10:38
Martin
Avatar van Martin
Martin is offline
Citaat:
eXo schreef op 23-02-2004 @ 11:32:
Wat is de beste (veiligste manier) om een string te escapen (ed) om 'm veillig in een database weg te stoppen?
Ik gebruik deze functie:

PHP-code:
function MakeStringSafe($type,$string){
    if(
$type == 1){
        if(
is_numeric($string)){
            return 
$string;
        }
        else{
            echo 
"Illegal string. Script terminated";
            exit;
        }
    }
    elseif(
$type == 'a'){
        
$string mysql_real_escape_string($string);
        return 
$string;

    }


In het bestand doe ik dan:

PHP-code:
MakeStringSafe("a",$_GET['page']); 
Met de eerste VAR geef ik aan wat voor soort var het moet zijn (nummeriek of een letter) en met de 2e var submit ik de string naar de functie.

In de functie kijk ik wat voor soort string het had moeten zijn en die controleer ik vervolgens. Daarna stuur ik de string weer terug.
Met citaat reageren
Oud 23-02-2004, 11:05
Verwijderd
Wow.. da's wel heel grondig

Ik pass alleen strings door naar m'n db, dus in principe kan ik dan volstaan door mysql_real_escape_string($string) te gebruiken?

(wat doet de functie precies (ik snapte de uitleg op php manual niet ))
Met citaat reageren
Oud 23-02-2004, 11:11
Martin
Avatar van Martin
Martin is offline
Citaat:
eXo schreef op 23-02-2004 @ 12:05:
Wow.. da's wel heel grondig

Ik pass alleen strings door naar m'n db, dus in principe kan ik dan volstaan door mysql_real_escape_string($string) te gebruiken?

(wat doet de functie precies (ik snapte de uitleg op php manual niet ))
Die zorgt ervoor dat er geen symbolen in de query kunnen worden gebruikt die de query zouden kunnen beïnvloden.
Met citaat reageren
Oud 23-02-2004, 11:26
Scooter B0y
Avatar van Scooter B0y
Scooter B0y is offline
het ziet er leuk uit hoe je programmeert maar mijn doel blijft toch om zo snel mogelijk te programmeren, beveiliging komt altijd wel goed
Met citaat reageren
Oud 23-02-2004, 11:28
Martin
Avatar van Martin
Martin is offline
Citaat:
Scooter B0y schreef op 23-02-2004 @ 12:26:
het ziet er leuk uit hoe je programmeert maar mijn doel blijft toch om zo snel mogelijk te programmeren, beveiliging komt altijd wel goed

Safety first!
Met citaat reageren
Oud 23-02-2004, 12:33
Verwijderd
Citaat:
Scooter B0y schreef op 23-02-2004 @ 12:26:
het ziet er leuk uit hoe je programmeert maar mijn doel blijft toch om zo snel mogelijk te programmeren, beveiliging komt altijd wel goed
domdomdom..
Met citaat reageren
Oud 23-02-2004, 13:22
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
Citaat:
Martin schreef op 22-02-2004 @ 18:54:
?
Citaat:
Enlightenment schreef op 23-02-2004 @ 01:47:
Als Register Globals UITstaat zoals dat braaf hoort, zie ik het nut van variabelen initen niet echt in, de gebruiker heeft er dan geen enkele invloed op. Behalve als je met user input gaat werken natuurlijk, maar dat spreekt voor zich.
there ya go.

En natuurlijk netjes alles bewijzen met GCL!
Met citaat reageren
Oud 23-02-2004, 23:08
Screaming Slave
Screaming Slave is offline
ieuw, hoorde ik daar gcl?
Met citaat reageren
Oud 25-02-2004, 00:04
Verwijderd
Nee dat las je. Wat is dat GCL?
Met citaat reageren
Oud 25-02-2004, 00:26
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
Citaat:
Screaming Slave schreef op 24-02-2004 @ 00:08:
ieuw, hoorde ik daar gcl?



Exo: GCL = guarded command language, een of andere schrale semiprogrammeertaal waarmee je de correctheid van standaardalgoritmen kunt bewijzen. Nadat je dit hebt gelezen, kun je het maar beter weer vergeten
Met citaat reageren
Oud 25-02-2004, 10:48
Screaming Slave
Screaming Slave is offline
Citaat:
eXo schreef op 25-02-2004 @ 01:04:
Nee dat las je.
ubersaai.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 03:20.