Sponsor-Board.de
PHP oder HTML

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Scripting (/forumdisplay.php?fid=108)
+---- Thema: PHP oder HTML (/showthread.php?tid=23804)


PHP oder HTML - Defkil - 26.03.2012 14:20

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!


RE: PHP oder HTML - _DEL6825 - 26.03.2012 14:23

-


RE: PHP oder HTML - _DEL4912 - 26.03.2012 14:24

-


RE: PHP oder HTML - _DEL6825 - 26.03.2012 14:26

-


RE: PHP oder HTML - keving - 26.03.2012 14:34

gmspace schrieb:
Mach es so:

PHP-Code:
    <?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.


RE: PHP oder HTML - _DEL6825 - 26.03.2012 14:41

-


RE: PHP oder HTML - Sysix - 26.03.2012 14:46

Wenn man index.php?site=test eingibt kommt nen fehler raus nur so als info Wink

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)


RE: PHP oder HTML - keving - 26.03.2012 14:49

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


RE: PHP oder HTML - Kalle - 26.03.2012 14:49

Wäre es nicht besser, das so zu schreiben? Erspart man sich die Arbeit, alles in ein Array einzutragen Wink

PHP-Code:
<?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

Code:
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


RE: PHP oder HTML - Sysix - 26.03.2012 16:06

Zitat:
Wäre es nicht besser, das so zu schreiben? Erspart man sich die Arbeit, alles in ein Array einzutragen Wink


genau deswegen andersum Smile nur die systemdaten im array wie mysql, settings und so Smile

Und was ist wenn du einen link wie seite wie forum_board oder so hast Biggrin? ich würde noch unterstirch gelten lassen Wink


RE: PHP oder HTML - Kalle - 26.03.2012 16:11

Sysix schrieb:
Und was ist wenn du einen link wie seite wie forum_board oder so hast Biggrin? ich würde noch unterstirch gelten lassen Wink


Das ist ja letztendlich nur eine Kleinigkeit. Ich bin ja nur von seinem Beispiel ausgegangen und habe es deshalb nicht weiter erwähnt. Ich für meinen Teil hätte das alles sowieso mit Mod_Rewrite realisiert und "/" ebenfalls erlaubt wie "-" und "_" =)

Aber das kann er sich ja nun selber machen, ganz so, wie er möchte. Denn wozu gibt es Google und genug PHP Hilfe-Seiten, um herauszufinden, wie die Befehle funktionieren?!

Lg


RE: PHP oder HTML - KoKsPfLaNzE - 26.03.2012 16:17

Also ich habe mir angewoehnt das alles zend machen zu lassen laeuft am ende ueber einen rewrite aber hast am ende großen vorteil mit der lesbarkeit deiner website, wegen den controllern und den actions.


RE: PHP oder HTML - master bratack - 26.03.2012 17:07

lass es in html, bevor du rumpfuschst. Wie schon vorher erwähnt, sind LFI sehr sehr sehr sehr sehr sehr sehr sehr gefählich. ich sagte nur shadow bzw passwd datei


RE: PHP oder HTML - KoKsPfLaNzE - 26.03.2012 17:23

wenn aber alles in html schreibst kannst es eigendlich gleich sein lassen du hast ja null dynamischen inhalt drin und darfst bei einer Änderung das überall nach ziehen, oder du baust für eine teilweise dynamik auf JavaScript.


RE: PHP oder HTML - Defkil - 27.03.2012 05:41

Ich habe so ein Script bei einer anderen Seite gefunden:

PHP-Code:
<?PHP
        
          
if(isset($_GET['s']) && !empty($_GET['s']))
          {
            if(
file_exists("./pages/".$_GET['s'].".php")) 
            {
              include(
"./pages/".$_GET['s'].".php");
            }
            else {
              include(
"./pages/home.php");
            }
          } else 
          {
            include(
"./pages/home.php");
          }
        
        
?>

Wäre der "gefährlich"? Oder soll ich lieber das mit der Whitelist ect. nehmen?


RE: PHP oder HTML - Kalle - 27.03.2012 06:49

Sogesehen schon.

Stell dir vor, jemand gibt

Code:
../config.php

ein, dann wird der Pfad zu ./pages/../config.php, und das wiederum hätte (zumindestunter Linux) den Effekt, das du die Config.php im Hauptverzeichnis aufrufst.

Kleine Frage, warum nutzt nicht eines der vorangegangenen Beispiele, eingeschlossen meines. Das ist doch soweit gesichtert?!

Liebe Grüße


RE: PHP oder HTML - Defkil - 27.03.2012 07:02

Ich habe bei einen Free Template das rauskopiert, da das die meisten besitzen (Eins der wenigen Minecraft Templates) Werde aber für meine wahrscheinlich deins nehmen Smile


RE: PHP oder HTML - Mave1993 - 27.03.2012 07:14

Ich emPfehle die php Version da sich Änderungen am Design weit aus einfacher gestalten Tongue


RE: PHP oder HTML - master bratack - 27.03.2012 07:45

klar ist die version gefährlich. nehmen wir an die version läuft auf debian und liegt im ordner /var/www/user100
würde jemand

Code:
index.php?s=../../../etc/passwd%00

das eingeben, würd er die password datei auslesen.
@Kalle, wenn da jemand ../config.php eingibt, bringt das garnichts, da die datei config.php.php sicher nicht existiert, man müsste ein nullbyte (%00) nach dem .php setzten ODEE man läst das .php gleich weg.

ich finde du verharmlost das extrem. Wenn man deine beiträge so liest, könnte man dneken, dass man dadurch nur php datei auslesen kann


RE: PHP oder HTML - Kalle - 27.03.2012 08:27

master bratack schrieb:
@Kalle, wenn da jemand ../config.php eingibt, bringt das garnichts, da die datei config.php.php sicher nicht existiert, man müsste ein nullbyte (%00) nach dem .php setzten ODEE man läst das .php gleich weg.


Öhhm, sogesehen ist das ja auch nur ein Beispiel gewesen, und ja, auch ich kann mich mal vertippen. Außerdem wurde das, hättest du wirklich alles gelesen, schon öfters durchgekaut.

master bratack schrieb:
ich finde du verharmlost das extrem.


Ich verharmlose das nicht. Bloß soll ich deswegen mit großen Ausrufezeichen jemanden einbläuen, das er das überhaupt nicht verwenden darf? Ich kann ja mal zitieren, wie andere vor mir bereits gesagt haben, das dies eine gefährliche Lücke ist. Was soll ich denn da noch großartig ergänzen?

1. Siehe [Link: Registrierung erforderlich]
2. [Link: Registrierung erforderlich]
3. [Link: Registrierung erforderlich]
4. [Link: Registrierung erforderlich]

Und ich halte die anderen Forenmitglieder für intelligent, und gehe davon aus, das diese bemerkt haben, das es unsicher ist.

master bratack schrieb:
Wenn man deine beiträge so liest, könnte man dneken, dass man dadurch nur php datei auslesen kann

Siehe Zitat Nr.3, ich habe im letzten Satz erwähnt, das der Zugriff auf Systemdateien möglich ist. sofern man den Webspace falsch konfiguriert hat. Was willst du noch?

Und bitte, lasst uns mit dem Kram aufhören, und zum eigentlichen Thema zurück kommen und nicht mit solch einem Kinderkram aufhalten, denn man konnte alle Infos, denen du mich beschuldigt hast, zu verharmlosen, aus anderen bzw. aus meinen Beiträgen heraussuchen. Und dann soll ich bei jedem Beitrag noch ein "Achtung, gefährlich!!!" drunterschreiben?

Weiteres bitte per PN und nicht hier im Thread. Danke =)

Liebe Grüße


RE: PHP oder HTML - Defkil - 15.04.2012 09:50

ich bentuze

PHP-Code:
<?php    switch($_GET['site']){
                default:             include(
"start.php"); break;
                case 
'login':        include("login.php"); break;
                case 
'profile':        include("profile.php"); break;
                case 
'toplist':        include("toplist.php"); break;
                case 
'signup':        include("signup.php"); break;
                case 
'rules':        include("rules.php"); break;
                case 
'contact':        include("contact.php"); break;
                case 
'settings':    include("settings.php"); break;
                
                case 
'rcah':        include("rcah.php"); break;
                case 
'loggedin':    include("logged.php"); break;
                case 
'was':    include("bringt.php"); break;
                case 
'preise':    include("gewinn.php"); break;
                

                }
    
?>

ist doh auch sicher oder?


RE: PHP oder HTML - Novoline - 15.04.2012 10:03

ich mach das immer so:

nav.php

PHP-Code:
?php
        
if (isset($_REQUEST['start'])) {
        include (
"path/to/startseite.php");

        }
?>


diese wird einfach via include in die index.php eingebunden.(natürlich dahin wo der eig. dext von startseite.php dann eingeblendet werden soll.

und das ist zbs der Link um die ,,Startseite´´ aufzurufen:

PHP-Code:
<li><a href="index.php?start">Startseite</a></li




RE: PHP oder HTML - Defkil - 15.04.2012 10:03

Sry bin oft am Handy...


RE: PHP oder HTML - Big Hosting - 15.04.2012 10:10

PHP-Code:
if(isset($_GET["page"]))
    if(
$_GET["page"]==str_replace("../","",$_GET["page"]))
        if (
file_exists("inc/".$_GET["page"].".php")) 
            include(
"inc/".$_GET["page"].".php"); 




RE: PHP oder HTML - Tolive - 15.04.2012 10:11

Sicher sind bisher beide Methoden .... es gibt ja auch nichts was man manipulieren könnte. Sonst kommt es drauf an was in den Dateien steht.

Ansonsten ist Defkill's Methode die durchdachtere. Geschwindigkeitstechnisch tun die sich zwar kaum etwas ... aber die von Defkill ist angenehmer zu lesen.


RE: PHP oder HTML - Kalle - 15.04.2012 10:12

Die Lösungen sind ja soweit auch korrekt, jedoch kommen wir da in einen Bereich, dass man jedesmal die Dateien editieren und Quellcode hinzufügen muss. Dass macht die Dateien nur unnötig lang und man selber muss bei neuen "Modulen" diese immer wieder eintragen - klingt sogesehen nicht nach viel Arbeit, aber warum umständlich, wenn es auch einfacher geht, so kann man den Quellcode schneller für etwas anderes ebenfalls benutzen (Usability)?!

Ich verwende derzeit für ein ziemlich neues Projekt erstmal folgendes:

PHP-Code:
    if(isset($_GET['page']) AND !empty($_GET['page']) AND preg_match('/^[a-zA-Z0-9_\-]+$/i',$_GET['page']) !== 0)
    {
        
$path './pages/'.$_GET['page'].'/index.php';
    }else{
        
$path './pages/'.$cfg['site_mainpage'].'/index.php';
    } 

[Link: Registrierung erforderlich]

Ist zwar auch noch nicht so ganz ausgereift, tut aber erstmal dass, was es soll und ist so einigermaßen abgesichert. Der Zugriff auf die Unterordner direkt wird durch eine .htaccess unterbunden Wink

Liebe Grüße


RE: PHP oder HTML - coloskopie - 15.04.2012 10:16

Die Methode von Defkill ist die einzig wirklich sichere...alles andere ist Müll!


RE: PHP oder HTML - Tolive - 15.04.2012 10:17

Deine Methode stand da noch nicht als ich angefangen bin zu schreiben ^^.

Ansonsten würde ich die auch nicht miteinander vergleichen wollen. Die Methode von Defkill ist für Anfänger die beste wahl. Denn sie ist sicher und relativ performant.

@coloskopie: Das stimmt nicht ... bei größeren Projekten kann man halt nicht alles statisch machen. Ansonsten gibt es noch bessere Methoden ... was aber in der Erklärung jetzt den Rahmen sprengen würde. Das wbb3 ist z.B. ein gutes Beispiel.


RE: PHP oder HTML - _DEL3891 - 15.04.2012 11:35

-


RE: PHP oder HTML - coloskopie - 15.04.2012 11:41

Tolive schrieb:
Deine Methode stand da noch nicht als ich angefangen bin zu schreiben ^^.

Ansonsten würde ich die auch nicht miteinander vergleichen wollen. Die Methode von Defkill ist für Anfänger die beste wahl. Denn sie ist sicher und relativ performant.

@coloskopie: Das stimmt nicht ... bei größeren Projekten kann man halt nicht alles statisch machen. Ansonsten gibt es noch bessere Methoden ... was aber in der Erklärung jetzt den Rahmen sprengen würde. Das wbb3 ist z.B. ein gutes Beispiel.


wieso statisch...eine zeile mehr und ich kann das ganze auch dynmisch anbieten. aber eure copy und paste mentalität kennt man hier ja schon :-)


RE: PHP oder HTML - Kalle - 15.04.2012 12:31

coloskopie schrieb:
Die Methode von Defkill ist die einzig wirklich sichere...alles andere ist Müll!


Dann will ich dich aber mal größere Projekte realisieren sehen ^^