Waar moet ik op letten bij programmeren?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Rob -

- Rob -

20/01/2017 17:30:01
Quote Anchor link
Houdie luitjes!

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
 
PHP hulp

PHP hulp

16/11/2024 01:30:50
 
Ivo P

Ivo P

20/01/2017 17:47:09
Quote Anchor link
stap 1:
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
 
- Rob -

- Rob -

20/01/2017 17:54:43
Quote Anchor link
Hartstikke bedankt!

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.
 
- Ariën  -
Beheerder

- Ariën -

20/01/2017 23:06:06
Quote Anchor link
Snoodaard = iemand met gemene bedoelingen, bijvoorbeeld een hacker.

Een mooie cheat-sheet kan je vinden op:

https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet
 
- Rob -

- Rob -

20/01/2017 23:54:58
Quote Anchor link
Hallo! Bedankt voor de reacties!

Nu even wat anders.. Ik heb even snel iets gemaakt voor achtergrond te veranderen van pagina, maar hij pakt niet..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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">

achtergrond_url is empty en de rest van de style [akt dkie wel.. Heb ik ergens iets fout gedaan met '' of ""?
 
Ben van Velzen

Ben van Velzen

21/01/2017 01:31:06
Quote Anchor link
Wat zie je in de HTML source verschijnen?
 
Adoptive Solution

Adoptive Solution

21/01/2017 08:29:46
Quote Anchor link
Probeer dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $style; ?>
 
- Rob -

- Rob -

21/01/2017 08:51:28
Quote Anchor link
Yap, dit werkt :)
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)
PHP script in nieuw venster Selecteer het PHP script
1
<body style="background: url(&quot;http://pds.exblog.jp/pds/1/201604/06/46/a0335946_15462169.png&quot;) 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)
PHP script in nieuw venster Selecteer het PHP script
1
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?
Gewijzigd op 21/01/2017 08:56:43 door - Rob -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/01/2017 16:16:18
Quote Anchor link
- 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
 
Ruard Weskriphuis

Ruard Weskriphuis

01/02/2017 11:24:16
Quote Anchor link
wat is $_CONFIG ?

dit is nergens te vinden bij php.net.

Of zie ik dat niet goed?
 
Ben van Velzen

Ben van Velzen

01/02/2017 11:33:46
Quote Anchor link
Dat is gewoon een eigen variabele.
 
- Ariën  -
Beheerder

- Ariën -

01/02/2017 11:50:54
Quote Anchor link
Ikzelf noem dit gewoon $settings, en ik ga niet zelf $_CONFIG globals verzinnen. Dit werkt gewoon verwarrend.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.