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?
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.

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

?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

/*

*/


// 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

<?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


<?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>
<?
  }
?>
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 [php]mysql_real_escape_string[/php]!
3. Je script is XSS gevoelig. Verwijder tekens uit gebruikersinput die XSS aanvallen kunnen ondersteunen. Bijvoorbeeld tekens als <, >, enz. Gebruik [php]htmlspecialchars[/php].
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)


[size=xsmall]Toevoeging op 10/07/2011 22:11:09:[/size]

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.

Reageren