Waar moet ik op letten bij programmeren?
Ik heb al vele scripts gemaakt, waarbij ik weer overnieuw ben begonnen omdat het niet veilig was door onder andere: escapen van outputs of geen brute force bescherming etc.
Dus vandaar dit topic, ik wil graag weten waar ik op moet letten tijdens het programmeren voor het zo veilig mogelijk te maken voor mijn gebruikers. 1 punt is dus al letten op het escapen van alle outputs/variables van een form. Alvast bedankt voor al uw reacties!
Met vriendelijke groet,
Rob
Beginnend programmeur
de gebruiker kan altijd een snoodaard zijn die je systeem gaat testen.
stap 2:
elke invoer van buiten, zal een bedoeling hebben. Check of je invoer kan voldoen: dus als je een emailadres verwacht, kijk dan of dat op een emailadres lijkt. Idem voor getallen, urls etc.
stap 3:
escaping. En dan escapen zoals het nodig is. Dus voor een database gebruik je andere functies dan voor het op het scherm tonen van een tekst.
onthoud dat een naam van een gebruiker ook nog steeds gebruikersinvoer is, ookal bekijkt een admin die pas 3 weken later in een overzicht. (en dan is het jammer dat iemand als naam <script>something evil()</script>jan hacker als naam heeft.
Verder is het zinnig om bij elke stap er vanuit te gaan dat er iets mis kan gaan:
lukte het maken van de database connectie?
lukte het uitvoeren van de query
vond je inderdaad resultaten met de query (of heb je precies 1 en niet meer resultaten)
lukte het opslaan
lukt het aanmaken van een bestand
kon je een mail versturen?
etc
etc
Alleen wat bedoel je precies met: 'snoodaard'? Ik heb nog nooit van dat woord gehoord ;-P
Ook maak ik een aparte tabel in de database met logs waarmee je op ip/naam/overzicht van alles kan zoeken. Voorbeeld: Iemand heeft zijn wachtwoord veranderd met het IP: 127.00.1, dat is dan bijvoorbeeld de log zelf, en dan ook een aparte rij met risico: 0 of 1 (1 als het van een ander IP is dan er geregistreerd is) etc.
Toevoeging op 20/01/2017 17:55:07:
En de logs zullen nooit worden verwijderd tenzij je dit zelf in de database leegt.
Nu even wat anders.. Ik heb even snel iets gemaakt voor achtergrond te veranderen van pagina, maar hij pakt niet..
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if(empty($_CONFIG['achtergrond_url'])) {
$_CONFIG['achtergrond_url'] = 'http://pds.exblog.jp/pds/1/201604/06/46/a0335946_15462169.png';
$style = 'background: url('.$_CONFIG['achtergrond_url'].') no-repeat center center fixed !important;';
}
?>
<body style="<?=$style;?> background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;" class="hold-transition login-page">
if(empty($_CONFIG['achtergrond_url'])) {
$_CONFIG['achtergrond_url'] = 'http://pds.exblog.jp/pds/1/201604/06/46/a0335946_15462169.png';
$style = 'background: url('.$_CONFIG['achtergrond_url'].') no-repeat center center fixed !important;';
}
?>
<body style="<?=$style;?> background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;" class="hold-transition login-page">
achtergrond_url is empty en de rest van de style [akt dkie wel.. Heb ik ergens iets fout gedaan met '' of ""?
Wat zie je in de HTML source verschijnen?
Alleen nu het volgende probleem: Hij maakt de achtergrond niet helemaal groot met background: cover terwijl ik nog opgezocht had hoe dat moest (ik heb die css code gekopieerd). Wat is er dan fout met mijn code? Of moet ik die background cover style in een apart bestand zetten en die importen?
Toevoeging op 21/01/2017 08:56:07:
HTML code is dit:
Code (php)
1
<body style="background: url("http://pds.exblog.jp/pds/1/201604/06/46/a0335946_15462169.png") center center no-repeat fixed !important;" class="hold-transition login-page" waid71fa0d88-5390-4b5b-a2f4-e45fa93d85e2="SA password protect entry checker">
Maar hier zie ik nergens hierboven iets met backgrounds maar wat ik heb getypt is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<body style="<?php echo $style; ?> background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;" class="hold-transition login-page">
En in een ander style mapje zetten werkt op een of andere manier niet, atans hoe ik het heb gedaan:
body {
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
[size=xsmall][i]Toevoeging op 21/01/2017 08:58:48:[/i][/size]
Vreemd genoeg werkt het met !important erachter wel maar dit lijkt mij niet de beste oplossing of wel?
En in een ander style mapje zetten werkt op een of andere manier niet, atans hoe ik het heb gedaan:
body {
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
[size=xsmall][i]Toevoeging op 21/01/2017 08:58:48:[/i][/size]
Vreemd genoeg werkt het met !important erachter wel maar dit lijkt mij niet de beste oplossing of wel?
Gewijzigd op 21/01/2017 08:56:43 door - Rob -
- Rob - op 20/01/2017 17:30:01:
1 punt is dus al letten op het escapen van alle outputs/variables van een form.
Niet alleen van een form maar alles wat geen static content is. Dus alles uit een formfield, database, een bestand van een derde partij, een api enz..
Je zou eigenlijk kunnen zeggen dat je van alle variabelen de output moet escapen.
Gewijzigd op 21/01/2017 16:17:04 door Frank Nietbelangrijk
dit is nergens te vinden bij php.net.
Of zie ik dat niet goed?
Dat is gewoon een eigen variabele.
Ikzelf noem dit gewoon $settings, en ik ga niet zelf $_CONFIG globals verzinnen. Dit werkt gewoon verwarrend.