PHP oder HTML
|
Verfasser |
Nachricht |
|
Beiträge: 322
Registriert seit: Dec 2011
Status:
offline
|
PHP oder HTML
Hey,
ich wollte mal fragen, was besser ist:
HTML in .html lassen oder
Das ganze in PHP und mit der GET Methode die weiteren Seiten laufen lassen
Was ist Sicherer, was ladet schneller/besser.
THX im vorraus!
Mit freundlichen Grüßen Defkil
[Link: Registrierung erforderlich]
|
|
26.03.2012 14:20 |
|
|
Beiträge: 317
Registriert seit: Sep 2011
Status:
Abwesend
|
|
26.03.2012 14:23 |
|
|
Beiträge: 375
Registriert seit: Feb 2011
Status:
Abwesend
|
RE: PHP oder HTML
Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2012 14:27 von _DEL4912.
|
|
26.03.2012 14:24 |
|
|
Beiträge: 317
Registriert seit: Sep 2011
Status:
Abwesend
|
|
26.03.2012 14:26 |
|
|
Beiträge: 446
Bewertung: 0
Registriert seit: Nov 2010
Status:
offline
|
RE: PHP oder HTML
Mach es so:
<?php if(!isset($_GET['site'])){ include("home.php"); }else{ include($_GET['site'].'.php'); } ?>
Wenn man dann macht: index.php?site=lol, dann wird die Datei "lol.php" an der Stelle "includet", wo dieser Code steht.
Wenn man angibt, z.B index.php?site=test, und "test.php" nicht existiert, dann "includet" er an dieser stelle einfach die home.php ...
lG
Ja und damit schaffst du schön eine Local File Inclusion Lücke. Ist so ziemlich die fatalste Lücke, da man damit den kompletten Server übernehmen kann.
Dieser Post kann Spuren von Sarkasmus und Ironie enthalten.
|
|
26.03.2012 14:34 |
|
|
Beiträge: 317
Registriert seit: Sep 2011
Status:
Abwesend
|
|
26.03.2012 14:41 |
|
|
Beiträge: 625
Bewertung: 7
Registriert seit: Aug 2010
Status:
offline
|
RE: PHP oder HTML
Wenn man index.php?site=test eingibt kommt nen fehler raus nur so als info 
Du musst dann noch abfragen ob die Datei existiert und ob sie auch eine Seitedatei ist (am besten ein array mit Systemdaten machen und abfragen ob die Seite im array nicht vorhanden ist)
|
|
26.03.2012 14:46 |
|
|
Beiträge: 446
Bewertung: 0
Registriert seit: Nov 2010
Status:
offline
|
RE: PHP oder HTML
Du überprüfst damit die GET Variable nicht ausreichend und man kann daher jeden beliebigen Pfad angeben. So wäre es möglich eine so genannte Shell einzubinden, mit der alles möglich wäre (Hochladen, löschen, ändern von Dateien, MySQL Datenbank einsehen, etc.).
Eine sichere Methode wäre das hier:
<?php $whitelist = array( 'home', 'news', 'subpage', 'contact' );
if(isset($_GET['page']) && in_array($_GET['page'], $whitelist)) { include($_GET['page'].'.php'); } else { include('home.php'); } ?>
Man müsste vorher alle erlaubten Seite in der Whitelist eintragen und nur diese sind dann erlaubt.
Dieser Post kann Spuren von Sarkasmus und Ironie enthalten.
Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2012 14:50 von keving.
|
|
26.03.2012 14:49 |
|
|
Beiträge: 711
Bewertung: 11
Registriert seit: Mar 2012
Status:
offline
|
RE: PHP oder HTML
Wäre es nicht besser, das so zu schreiben? Erspart man sich die Arbeit, alles in ein Array einzutragen 
<?php //Falls der User keine Seite angegeben hat if(!isset($_GET['page'])) { //Include eine Standard-Datei include('./pages/main.php'); }else{ //Ansonsten $path = './pages/'.preg_replace("/[^A-Z a-z]/", "", $_GET['page']).'.php'; //Prüfe ob diese Datei vorhanden ist if(file_exists($path)) include_once($path); //Include diese Datei else include_once('./pages/404.php'); //Include die Fehler-Page } ?>
Wäre jetzt nur ein kleines Beispiel.
Preg_replace kümmert sich darum, das nur Buchstaben in einem String vorkommen dürfen. Alles andere sollte durch "nichts" ersetzt werden. Ist gerade alles ausm Kopp geschrieben, daher weiß ich nicht ob es wie erwartet funktioniert, gehe aber davon aus.
Zwecks übersichtlichkeit solltest du alle Seiten, die man includet, in einen Unterordner verschieben. Für zusätzliche Sicherheit sollte man eine Variable definieren, und in der zu includenen Datei überprüfen, ob diese definiert worden ist. Falls nicht, sofort ein "exit" raushauen. Denn es hat ja schon seinen Grund warum die Datei geincludet werden soll, oder nicht?
Kevin hat aber schon ganz richtig geschrieben, so könnte jeder z.B. wenn er
index.php?site=./config.php
aufruft, die Config.php includen, womöglich noch anderes. Bestes Beispiel sind dann immer Linux Systemdateien, etc. wenn der Webspace nicht abgesichert ist.
Lg
[Link: Registrierung erforderlich]
Rosen sind rot, gelb ist die Biene. Ich kann nicht dichten, Waschmaschine.
Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2012 14:51 von Kalle.
|
|
26.03.2012 14:49 |
|
|
Beiträge: 625
Bewertung: 7
Registriert seit: Aug 2010
Status:
offline
|
RE: PHP oder HTML
Wäre es nicht besser, das so zu schreiben? Erspart man sich die Arbeit, alles in ein Array einzutragen Wink
genau deswegen andersum nur die systemdaten im array wie mysql, settings und so 
Und was ist wenn du einen link wie seite wie forum_board oder so hast ? ich würde noch unterstirch gelten lassen 
|
|
26.03.2012 16:06 |
|
|