Springen naar inhoud

Probleempje met php op server


  • Log in om te kunnen reageren

#1

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 19 augustus 2008 - 13:04

Geen idee of dit het goede subforum is, maar ik kon geen andere goede vinden.
Ik ben druk bezig om mijn PHP kennis uit te breiden en ben nu bezig met een database-based (:D) CMS. Ik heb een inlogpagina gemaakt met het adres ../admin/index.php. Ik zet 'm op de server, probeer het bestand te openen en krijg: foutmelding 403: You don't have permission to access /admin/index.php on this server.. Bij andere pagina's krijg ik foutmeldingen over mijn session gebruik, terwijl ik toch bovenin de pagina goed session_start() heb neer gezet. Weet iemand waar dit aan kan liggen? Ligt het aan het gebruik van een database?
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Benm

    Benm


  • >5k berichten
  • 8789 berichten
  • VIP

Geplaatst op 19 augustus 2008 - 13:27

Met die database heeft het echt niets te maken...

Zou het evt kunnen dat je in een shared/virtual hosting omgeving zit waarbij /admin is gereserveerd voor het een of ander, en daardoor die error geeft? Even verplaatsen naar /onzin zou dan moeten helpen.
Victory through technology

#3

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 19 augustus 2008 - 14:00

Dan kan hij het bestand opeens niet meer vinden :D :D
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

#4

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 19 augustus 2008 - 18:49

Heb je de inlogpagina zelf geschreven? laat de code dan hier eens zien.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#5

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 20 augustus 2008 - 07:39

Ik heb een inlogpagina gemaakt met het adres ../admin/index.php.

Ten opzichte van wat, de web root? Want dan kun je sowieso niet naar die dir browsen.
(of waren die twee puntjes een typo?)
In theory, there's no difference between theory and practice. In practice, there is.

#6

Spooky K

    Spooky K


  • >25 berichten
  • 54 berichten
  • Ervaren gebruiker

Geplaatst op 20 augustus 2008 - 17:24

Het klinkt als een fout die ik zelf kort geleden ook ben tegen gekomen. Bij mij lag het probleem in de instellingen van Apache: ik had niet de juiste permissies gegeven aan mappen in mijn root map.

Mocht het aan je code liggen: een website waar ik zelf vrijwel alles van geleerd heb en nog steeds als naslagwerk gebruik (voor php):
http://hudzilla.org/...title=Main_Page
"I believe in God, only I spell it Nature." - Frank Lloyd Wright
"Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke
"There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle." - A. Einstein

#7

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 21 augustus 2008 - 17:58

Ik zal hieronder de PHPcode geven:

<?php
session_start();
if (isset($_POST["inloggen"])) {
	// Include Open-server-file
	include("PHP/server.php");
	// Inloggegevens
	$gebruikersnaam=$_POST["gebruikersnaam"];
	$wachtwoord=$_POST["wachtwoord"];
	// Query
	$queen="SELECT Naam, Wachtwoord, Permissies FROM Accounts WHERE Username =".$gebruikersnaam;
	// Foutcontrole voor invoer
	if (!mysql_query($queen, $db)) {
		header("Location: [url="http://www.bobby.gethost.nl/admin/index.php");"]http://www.bobby.gethost.nl/admin/index.php");[/url]
	}
	else {
		$resultaat=mysql_query($queen, $db);
	}
	mysql_close($db);
	// Wachtwoord controle
	//		+
	// Listing variables
	list($name, $pass, $perm) = $resultaat;
	if ($wachtwoord==$pass) {
		$_SESSION["naam"] = $name;
		$_SESSION["perm"] = $perm;
		header("logedin.php");
	}
	else {
		header("Location: [url="http://www.bobby.gethost.nl/admin/index.php");"]http://www.bobby.gethost.nl/admin/index.php");[/url]
	}
}
else{
header("Location: [url="http://www.bobby.gethost.nl/admin/index.php");"]http://www.bobby.gethost.nl/admin/index.php");[/url]
}	
?>
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

#8

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 21 augustus 2008 - 21:24

Is dat met die url= tussen vierkante haken in je header regels nou een tiepfout? Want dat moet natuurlijk weg, het is gewoon:
header("Location: http://www.bobby.gethost.nl/admin/index.php");
Verder staat er bij die logedin.php geen location voor, dat zal wel dit moeten zijn:
header("Location: http://www.bobby.gethost.nl/admin/loggedin.php");


Nog belangrijker: deze code is extreem onveilig. Wat denk je dat er gebeurt als een of andere grapjas dit invult als gebruikersnaam:
x; DELETE * FROM Username;
of dit:
x; UPDATE Accounts SET Wachtwoord=x;
en vervolgens inloggen als admin :D

Gouden Regel: troep die door users wordt ingevuld (zoals namen, wachtwoorden, enz) die je in SQL queries gebruikt, ALTIJD escapen met mysql_real_escape_string() en quotes omheen zetten.

Verder zou ik geen passwords in je database opslaan, maar hashes van passwords. Net zo veilig, en voorkomt dat iemand ooit de daadwerkelijke passwords kan lezen.
In theory, there's no difference between theory and practice. In practice, there is.

#9

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 21 augustus 2008 - 21:32

die URL=[... enz... is toegevoegd door het forum script (niets tegen onze geweldige programmeurs hoor :P ). Die fout met Location is idd een fout, maar volgens mij kan dat de fout niet veroorzaken. De pagina wordt helemaal niet getoond! De foutcontrole ben ik mee bezig, maar die doe ik altijd op het laatst, want anders zie ik door de bomen het bos niet meer :D .
Verder: zou je een uitleg kunnen geven van een hash? :P = eerste keer met een database :D
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

#10

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 21 augustus 2008 - 21:47

Verder: zou je een uitleg kunnen geven van een hash? :P = eerste keer met een database :D


Een hash is een gecodeerde vorm van een string. Zo kan je van een string een md5 hash maken (gecodeerd volgens het md5 logaritme) wat momenteel zowat het meest gebruikte is. Er zijn er ook nog andere zoals SHA en dergelijke. Een hash heeft de eigenschap dat je een string kan coderen, maar de gecodeerde vorm niet meer kan omzetten naar de originele string. Mocht iemand dus ooit de inhoud van je database zien dan zien ze enkel de hash waarden en niet de echte wachtwoorden.

Wanneer je nu met php een wachtwoord in je database stopt dan zet je deze dus best eerst om naar een md5 hash dmv de functie md5($string). Wanneer iemand nu inlogt kan je testen of de hash waarden van de login gelijk is aan die van de database. Bv: if (md5($login) == $database_hash) login();

Hashes zijn ook niet 100% veilig omdat je ze wel kan bruteforcen in zekere zin. Er zijn hele databases te vinden met miljoenen hash waarden in om zo een passende string te vinden met die hash waarde maarja, niks is 100% veilig. Maar dit zijn zorgen voor later :D

#11

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 23 augustus 2008 - 11:26

Alles gedaan wat jullie zeiden (fouten eruit, veiliger gemaakt, mapnamen aangepast, rechten veranderd), maar heeft helemaal niets geholpen. Ff voor de duidelijkheid: die ../admin/index.php staat voor www.bobby.gethost.nl/admin/index.php . Mss ligt het daaraan? (hoop hoop) :D
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

#12

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 23 augustus 2008 - 11:58

Je inlog pagina doet het nu wel zo te zien?
In theory, there's no difference between theory and practice. In practice, there is.

#13

QED

    QED


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 23 augustus 2008 - 16:07

Hoe krijg je die pagina alleen al te zien? :D het enige wat ik krijg is:

Forbidden
You don't have permission to access /admin/index.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

--------------------------------------------------------------------------------

Apache/2 Server at www.bobby.gethost.nl Port 80
"Ha ha ha... hun zijn wel dom :)"
"Wiskunde is leuker als je denkt"

#14

Spooky K

    Spooky K


  • >25 berichten
  • 54 berichten
  • Ervaren gebruiker

Geplaatst op 23 augustus 2008 - 17:01

Het meest waarschijnlijke lijkt me toch dat je Apache verkeerd ingesteld hebt. Kun je de config-file eens posten (of in ieder geval het deel waar je de rootdir en de permissies hebt ingesteld)?
"I believe in God, only I spell it Nature." - Frank Lloyd Wright
"Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke
"There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle." - A. Einstein

#15

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 24 augustus 2008 - 10:06

Hoe krijg je die pagina alleen al te zien? :D het enige wat ik krijg is:

Heel vaag, nu krijg ik dat ook, maar als ik een paar keer refresh komt hij er toch:
Geplaatste afbeelding
Als ik blijf refreshen doet hij het 9 van de 10 keer goed.

Maar nog vager: als ik hetzelfde in Firefox probeer blijft die error komen, hoe vaak ik ook refresh!

Het ligt dus in ieder geval niet aan je php code, d'r is echt iets mis met je server instellingen. Let trouwens op de titel, het is dus een 403 error, geen 404! (die 404 in te de tekst komt omdat hij de pagina voor een 403 error niet kan vinden).
In theory, there's no difference between theory and practice. In practice, there is.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures