Seite 1 von 1

verhindern das meine dateien wo anders includet werden

Verfasst: 13.01.2007 18:59
von langeweile
ich habe mir ein kleines homepagescript gebastelt. dazu gibt es einige funktiondateien, die ich inlcude.

aber wie verhindere ich, dass jemand anders das in seine scripte includet und so meine datenbank erreichen kann?




p.s.
man kann doch auch so includen oder?
include ("http://www.......");
oder geht das nur mit internen links, da gäbe es das obere problem ja nicht

Verfasst: 13.01.2007 19:02
von Pyramide
Du kannst es so wie phpBB machen und eine gesetzte Konstante vorrausetzen. Such mal im Quellcode (z.B. index.php und common.php) nach IN_PHPBB.

Verfasst: 13.01.2007 19:06
von langeweile
aber kann man das nicht umgehen, in dem der, der an die inlcudes herankommen will in seinem script die gleiche konstante setzt und dann erst includet?



edit:

hab das gefunden

Code: Alles auswählen

if ( !defined('IN_PHPBB') )
{
	die("Hacking attempt");
}
sry, aber das kapier ich überhaupt nicht, wie kann man denn da überprüfen ob eine konstante gesetzt ist? vorher ist doch gar kein code, in dem die konstante gesetzt wird

Re: verhindern das meine dateien wo anders includet werden

Verfasst: 13.01.2007 19:09
von S2B
langeweile hat geschrieben:aber wie verhindere ich, dass jemand anders das in seine scripte includet und so meine datenbank erreichen kann?
z.B. so, wie es das phpBB macht:
Direkt aufgerufene Dateien:

Code: Alles auswählen

define('IN_PHPBB', true);
Dateien, die eingebunden werden:

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
  exit;
}
Dazu noch eine .htaccess in den Ordner, in dem die Dateien liegen:

Code: Alles auswählen

Deny from all
langeweile hat geschrieben:man kann doch auch so includen oder?
include ("http://www.......");
oder geht das nur mit internen links, da gäbe es das obere problem ja nicht
Das geht nur, wenn allow_url_fopen an ist.

Verfasst: 13.01.2007 19:12
von langeweile
aber würde dann so ein script nicht funktionieren

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
include("http://www.phpbb.de/common.php");
.....

nur so als beispiel :D

denn dann wird die konstante doch gesetzt und die abfrage müsste positiv verlaufen

Verfasst: 13.01.2007 19:18
von Olli Oberhausen
Probiers doch mal aus, dann weisst du es.

Die common. hp wird bei einem include auf dem remote server vollständig geparsed , ausgegeben und beendet.
Somit kannst du nicht auf die funktionen und objekte (z.b.$sql) zugreifen.

Olli

Verfasst: 13.01.2007 19:21
von langeweile
also werden zum schluss alle variablen auf 0 gesetzt oder wie


und wenn ja wozu dann der konstanten schutz, wenn man den umgehen kann

Verfasst: 13.01.2007 21:25
von Olli Oberhausen
Die variablen werden nie gesetzt.
Das script wird auf dem remote server ausgefuhrt und die geparste datei als htm, xml oder was auch immer zurückgegeben...

Olli