Pagina beveiligen? Weet t niet meer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rob Peres

Rob Peres

10/07/2011 20:07:56
Quote Anchor link
Ik ben ergens aan begonnen waarvan ik nu denk dat ik het einde niet ga halen. ik dacht even een login systeem te maken met behulp van vriend Google.
Ik heb een systeem geinstalleerd (heel simpel net als de site) maar het werkt niet.
Ik heb slechts enkele bestanden die hiermee verband houden:
beveiligd.php
contactdb.php
login.php
toevoegen.php
weergeven.php
Zeer tevreden met mezelf toen alles was aangepast en draaide maar .......

de "te beveiligen pagina" job_add.php wordt inderdaad bereikt vanuit het inlogformulier maar ook gewoon rechtstreeks vanaf mijn browser.
Mijn verstand zegt dat ik wat op deze pagina moet toevoegen maar zou niet weten wat, waar en hoe. Ben al 2 uur forums aan het lezen over includen, maar wat ik ook include; niets helpt!?

Iemand zin om deze nitwit een duwtje in de goede richting te geven misschien?

Als ik wat gegevens moet aanleveren, hoe verklein ik deze dan tot een normaal formaat?
 
PHP hulp

PHP hulp

29/03/2024 12:43:14
 
Noppes Homeland

Noppes Homeland

10/07/2011 20:21:48
Quote Anchor link
Hoe denk je dat we jou nog verder het diepe in kunnen trappen.

Je hebt een heel lul verhaal, maar je vergeet totaal te komen met:
1. hoe je het inloggen en beveiliging geregeld hebt
2. relevante code van wat er niet lukt.
 
Rob Peres

Rob Peres

10/07/2011 20:38:47
Quote Anchor link
hoop eigenlijk dat iemand een reddingsvestje gooit.

1.
database/tabel gemaakt voor leden OK
inschrijven via formulier OK
inloggen met gegevens uit database OK
vanuit LOGIN doorverwijzen naar job_add.php OK

wanneer ik echter in mijn browser direct naar job_add.php surf, kom ik gewoon binnen.

beveiligd.php
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
15
16
17
18
19
20
21
22
23
24
25
?php

// sql connectie includen
include('contactdb.php');

// inlogpagina
$login_pagina = "login.php";

$sql = "SELECT * FROM formulier WHERE inlognaam='".$_COOKIE['inlognaam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$aantal = mysql_num_rows($resultaat);
    if ($aantal == '0') {
    // de waarde van de aanwezige inlognaam-cookie bij de bezoeker komt niet overeen met een waarde uit de database
        echo "Klik <a href=\"".$login_pagina."\"></a> om in te kunnen loggen.";
    } else {
        $login = mysql_fetch_object($resultaat);
        if ($_COOKIE['passwoord'] != $login->passwoord || $_COOKIE['inlognaam'] != $login->inlognaam) {
            echo "De cookies konden niet gecombineerd worden.";
        } else {
            // de beveiligde inhoud tonen;
                        
        }
    }

?>



Login.php
REGISTREREN WORDT DOOR MIJ NIET GEBRUIKT, GAAT VIA ANDER FORMULIER MAAR KOMT WEL IN DE JUISTE DBASE
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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*

*/


// sql connectie includen
include('contactdb.php');

// waar moet de bezoeker heengestuurd worden nadat hij/zij succesvol ingelogd is ?
$redirect_pagina = "job_add.php";

if ($_GET['actie'] == 'inloggen') {
// als inlogformulier is verstuurd

    $sql = "SELECT * FROM formulier WHERE inlognaam='".$_POST['inlognaam']."'";
    $resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
    $aantal = mysql_num_rows($resultaat);
    if ($aantal == '0') {
    // als er geen resultaat is gevonden
        echo "Helaas, de door u ingevulde inlognaam bestaat niet.";
    } else {
    $login = mysql_fetch_object($resultaat);
    $login->passwoord;
    $login->inlognaam;
        if($_POST['passwoord'] == $login->passwoord) {
        // als gegevens kloppen met gegevens uit database, cookies setten en doorsturen!
                setcookie("inlognaam", $_POST['inlognaam'], time() + 60*60); // cookie blijft 60 keer 60 seconden bestaan
                setcookie("passwoord", $_POST['wachtwoord'], time() + 60*60);
            echo "U bent succesvol ingelogd, een moment.. <META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=".$redirect_pagina."\">";
        } else {
            echo "Uw inloggegevens kloppen niet, klik <a href=\"".$_SERVER['PHP_SELF']."\">hier</a> om nogmaals te proberen of melt U eerst aan.";
        }
    }
} else if ($_GET['actie'] == 'registreren') {
// als men zich wil registreren
    if ($_GET['versturen'] == 'ja') {
    // als formulier reeds is verstuurd
            if (empty($_POST['inlognaam'])) {
                echo "Je hebt geen inlognaam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            } else if (empty($_POST['passwoord'])) {
                echo "Je hebt geen passwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            } else if (empty($_POST['passwoord_controle'])) {
                echo "Je moet ter controle ook het controleveld voor het passwoord invullen, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            } else {
                if ($_POST['passwoord'] != $_POST['passwoord_controle']) {
                    echo "De ingevoerde passwoorden kwamen niet overeen, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
                } else {            
                        $registreer = "INSERT INTO members (inlognaam, passwoord) VALUES ('".$_POST['inlognaam']."', '".$_POST['passwoord']."')";
                        mysql_query($registreer) or die(mysql_error());                
                    echo "Uw gegevens zijn succesvol opgeslagen! Klik <a href=\"".$_SERVER['PHP_SELF']."\">hier</a> om in te kunnen loggen.";        
                }
            }
        } else {
        // als formulier nog niet is verstuurd, toon registratieformulier
    
            echo "<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&amp;versturen=ja\" method=\"post\">
            <table>
            <tr><th colspan=\"2\">Geen Login? eerst aanmelden</th></tr>
            <tr><td>Inlognaam</td><td><input type=\"text\" name=\"inlognaam\" size=\"15\"></td></tr>
            <tr><td>Passwoord</td><td><input type=\"password\" name=\"passwoord\" size=\"15\"></td></tr>
            <tr><td>Passwoord <small>(controle)</small></td><td><input type=\"password\" name=\"passwoord_controle\" size=\"15\"></td></tr>
            <tr><td></td><td><input type=\"submit\" value=\"Geen Login? Eerst aanmelden\"></td></tr>
            </table></form>";
        }
    
} else {
// inlogformulier

    echo "<form action=\"".$_SERVER['PHP_SELF']."?actie=inloggen\" method=\"post\">
    <table>
    <tr><th colspan=\"2\">Inloggen</th></tr>
    <tr><td>Inlognaam</td><td><input type=\"text\" name=\"inlognaam\" size=\"15\"></td></tr>
    <tr><td>Passwoord</td><td><input type=\"password\" name=\"passwoord\" size=\"15\"></td></tr>
    <tr><td></td><td><input type=\"submit\" value=\"Inloggen\"></td></tr>
    <tr><td></td><td><a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\"></a></td></tr>
    </table></form>";
}

?>



contactdbase.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$host
= "localhost";   //mysql locatie
$user = "*********";      //mysql gebruikersnaam
$pass = "*********";      //mysql wachtwoord
$db = "*********";   //mysql database

    mysql_connect($host,$user,$pass) or die(mysql_error());  
    mysql_select_db($db);

?>


Te beveiligen _ job_add.php

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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
if(mysql_connect('localhost','***********','*********'))
  {

    mysql_select_db('*********') or die(mysql_error());
  }

else
  {
    echo 'Kan geen verbinding maken';
    exit;
  }



if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
  {

    $aFouten = array();
    if($_POST['Locatie'] == '')
      {

        $aFouten[] = 'Je hebt geen locatie ingevuld';
      }

    if($_POST['Datum'] == '')
      {

        $aFouten[] = 'Je hebt geen datum ingevuld';
      }

    if($_POST['Tijd'] == '')
      {

        $aFouten[] = 'Je hebt een ongeldige tijd ingevuld';
      }

    if($_POST['Voertuig'] == '')
      {

        $aFouten[] = 'Je hebt geen voertuig ingevuld';
      }

      if($_POST['Bel'] == '')
      {

        $aFouten[] = 'Je hebt geen geldig telefoonnummer ingevuld';
      }

if($_POST['Mail'] == '')
      {

        $aFouten[] = 'Je hebt geen geldig Email adres ingevuld';
      }


    


   if(count($aFouten) != 0)
          {

            echo 'De volgende fouten zijn opgetreden: <br /><br />';
            for($Fi = 0; $Fi < count($aFouten); $Fi++)
              {

                echo $aFouten[$Fi].'<br />';
              }

            echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
          }

        else
          {
         mysql_query("INSERT INTO ritten (Locatie,Datum,Tijd,Voertuig,Bel,Mail)
VALUES
('"
.addslashes($_POST['Locatie'])."',
'"
.addslashes($_POST['Datum'])."',
'"
.addslashes($_POST['Tijd'])."',
'"
.addslashes($_POST['Voertuig'])."',
'"
.addslashes($_POST['Bel'])."',
'"
.$_POST['Mail']."')") or die (mysql_error());

          
          echo 'De gegevens zijn succesvol opgeslagen in de ********* database';
          }
      
  }

else
  {
?>


<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">

<br><br><br>


<table width="450px">
</tr>
<tr>
 <td valign="top">
  <label for="Locatie">Komt leeg in *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Locatie" maxlength="50" size="30">
 </td>
</tr>
</tr>
<tr>
 <td valign="top">
  <label for="Datum">Datum *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Datum" maxlength="50" size="30">
 </td>
</tr>
</tr>
<tr>
 <td valign="top">
  <label for="Tijd">Tijd *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Tijd" maxlength="50" size="30">
 </td>
</tr>
</tr>
<tr>
 <td valign="top">
  <label for="Voertuig">Voertuig *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Voertuig" maxlength="50" size="30">
 </td>
</tr>
</tr>
<tr>
 <td valign="top">
  <label for="Bel">Bel mij *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Bel" maxlength="50" size="30">
 </td>
</tr>
</tr>
<tr>
 <td valign="top">
  <label for="Mail">Mail mij *</label>
 </td>
 <td valign="top">
  <input  type="text" name="Mail" maxlength="50" size="30">
 </td>
</tr>


</table>





<input type="submit" name="verzenden" value="verzenden">
</form>
<?
  }
?>
 
The Force

The Force

10/07/2011 21:13:18
Quote Anchor link
In de cookies wordt gewoon het wachtwoord opgeslagen. Dat betekent dat iedereen die de cookies heeft de wachtwoorden uit kan lezen. Dat is echt slecht. Je zou dit systeem echt moeten aanpassen voordat je het kan gebruiken. In plaats van dat je met setcookie een cookie set op het moment dat je ingelogd moet worden moet je een waarde in de sessie zetten. Iets als $_SESSION['logged_in'] = true. Je moet dan session_start() boven aan elke pagina zetten en op beveiligde pagina's controleren of $_SESSION['logged_in'] true is. Zo niet dan moet je doorgestuurd worden naar de login pagina. Als je wilt uitloggen moet je de logged_in sessie item verwijderen.

Zomaar verder een aantal opmerkingen:
1. Gebruik geen $_SERVER['PHP_SELF'].
2. Je script is gevoelig voor SQL injectie. Beveilig alles wat naar de database gaat met mysql_real_escape_string!
3. Je script is XSS gevoelig. Verwijder tekens uit gebruikersinput die XSS aanvallen kunnen ondersteunen. Bijvoorbeeld tekens als <, >, enz. Gebruik htmlspecialchars.
 
Rob Peres

Rob Peres

10/07/2011 21:21:46
Quote Anchor link
Dank voor je snelle reactie maar uh ....
Ik ben duidelijk niet thuis in deze materie en heb voor iemand een website in elkaar gesleuteld en geplakt.
jouw commentaar gaat mij ver boven mn pet, zoals je wellicht zult begrijpen.

Ik ga hier volgend weekend proberen wat documentatie over te vinden.
Is e.e.a. wel aan te passen of moet ik alles verwijderen en een heel nieuw systeem gebruiken? (hoop t niet0

En kan je misschien aangeven hoe ik het huidige (onveilige) systeem wel goed werkend kan krijgen vanavond?
M.a.w.: wat moet er nou op de te beveiligen pagina job_add.php gedaan/toegevoegd worden. (even zonder Session dan)


Toevoeging op 10/07/2011 22:11:09:

Heb alles verwijderd en ga me eerst een poosje verdiepen in de materie. Wil dat het uiteindelijk ook goed en veilig werkt.

nogmaals dank voor de opbouwende kritiek.
 
Php knipper

php knipper

10/07/2011 22:14:02
Quote Anchor link
een tut om te starten is deze
http://forum.fnl.nl/showthread.php?t=1860

wel opgelet voor de goede beveiliging want er is een hackmogelijkhijd.
 



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.