Nur bestimmte Variablen zulassen - Wie ?? |
TeX
Otto-Normal-Poster
Beiträge: 51 |
Dann machen wir es noch einfacher und benutzen $_SERVER['DOCUMENT_ROOT']; und lesen anhand von diesem Pfad das Verzeichnis aus?
1:
2:
3:
4:
5:
6:
7: |
$_GET[var] ab den letzten / auslesen;
$verz="mein verzeichnis";
if(file_exists($_SERVER['DOCUMENT_ROOT'].$verz."/".$_GET[var].".php")){
include($_SERVER['DOCUMENT_ROOT'].$verz."/".$_GET[var].".php");
}
|
Sollte doch passen denk ich.
---
Ankauf leere Toner | Ankauf leere Tonerkartuschen
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich hatte bereits gesagt das man ../ in der GET-Variable verwenden kann. Ob der Document-Root da mit rein gesetzt wird, ist völlig irrelevant. Zumindest auf einem Windows-Server (wenn nicht sogar auf jeder Art von Servern) würde auch ..\ funktionieren.
Eventuell kann man das auch noch andere Zeichen aushebeln (ASCII 0 wäre ein Kandidat). Ich hatte bisher noch keinen Grund alle Varianten auszutesten, da ich ein solches Konstrukt (include über get-param) nie bauen würde.
*btw* Solltest du mal das Error-Reporting auf deinem Testserver auf E_ALL stellen.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
dee123
Otto-Normal-Poster Threadstarter
Beiträge: 63 |
Ich bin´s nochmal,
jetzt habt ihr es geschafft: ICH BIN NUN VÖLLIG DURCHEINANDER !!
@subjective: Verrate mir doch mal, wie Du deine Homepage denn aufgebaut hast, ohne includes zu verwenden. Oder hast du eine reine HTML-Seite?
und nochmal an alle anderen: Welches ist denn nun die wirklich sichere Variante?
versteh jetzt gar nix mehr
---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich habe sehr wohl Includes. Jedoch keine dynamsichen Includes, welche durch Parameter bestimmt werden. Bei mir holen sich die Inhaltsseiten (index.php, talks.php, ...) die zentralen Daten aus Includes (header, footer, menü, ...). Also genau umgedreht. So lange man die Daten im Dateisystem ablegt, gibt es keinen Grund dieses nicht auch auszunutzen.
Dies war füher auch auf der Weaverslave-Seite so, jetzt läuft dort ein WebCMS. Dabei liegt die gesamte Logik (und keine Inhalte) in Klassen, welche nach Bedarf geladen werden - jedoch sind die Dateinamen der Includes fast immer fest im Code.
Es gibt wenige Ausnahmen in denen der Dateiname des Includes eine Variable ist. In diesen Fällen wird der Inhalt der Variable jedoch nicht über einen Parameter, sondern über Daten auf dem Server bestimmt. So bestimmt die Datenbankkonfiguration, welche Datenbankklasse (mysql, pgsql, sqlite) geladen wird. Die zweite Ausnahme sind Plugins für das CMS. Ähnlich wie bei deiner aktuellen Lösung wird hier eine Dateiliste erstellt. Sie landet dann jedoch in der Datenbank.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
dee123
Otto-Normal-Poster Threadstarter
Beiträge: 63 |
@subjective:
Ich habs verstanden. Jedoch wäre es ein enormer Aufwand für mich, meine Seite komplett umzustricken.
Wenn ich nochmal auf die "Whitelist" zu sprechen kommen darf: Wäre es also sinnvoll, eine z.B. MySQL-Tabelle anzulegen, die in der ersten Spalte den Dateinamen ( home.php, umfragen. html, info.pdf,..........) und in der zweiten Spalte z.B. eine MD5-Verschlüsselung des Dateinamens enthält?
Somit würde ich die übergebene var in Form:
1: | index.php?site=3245klnsdfl345nlksdjwe45 ( frei erfunden natürlich) |
übergeben, das dann mit den Werten der 2.Spalte vergleichen und dann die Datei der ersten Spalte includieren.
Ist das sicher? oder gibt es da auch noch Lücken?
Dank Dir schonmal
---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.
|
 Profil
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Naja, das macht den Aufruf für den Besucher noch furchtbarer und die andere Variante von dir ist hinreichend. Es würde vielleicht schneller gehen, wenn du die List der Dateien eifnach in einer textdatei oder halt in MySQL speichern würdest und hieraus in das Array lesen würdest, weil dann keine langsamen Operationen im Dateisystem gemacht werden müssen.
|
 Profil
Editieren
Zitieren
|
TeX
Otto-Normal-Poster
Beiträge: 51 |
dee123 schrieb am 11.11.2005 13:39
@subjective:
Ich habs verstanden. Jedoch wäre es ein enormer Aufwand für mich, meine Seite komplett umzustricken.
Wenn ich nochmal auf die "Whitelist" zu sprechen kommen darf: Wäre es also sinnvoll, eine z.B. MySQL-Tabelle anzulegen, die in der ersten Spalte den Dateinamen ( home.php, umfragen. html, info.pdf,..........) und in der zweiten Spalte z.B. eine MD5-Verschlüsselung des Dateinamens enthält?
Somit würde ich die übergebene var in Form:
1: | index.php?site=3245klnsdfl345nlksdjwe45 ( frei erfunden natürlich) |
übergeben, das dann mit den Werten der 2.Spalte vergleichen und dann die Datei der ersten Spalte includieren.
Ist das sicher? oder gibt es da auch noch Lücken?
Dank Dir schonmal
|
Jop sollte sicher sein, weil die Verarbeitung nun nichts anderes ist als "statisch". Das gleiche wär wie in meiner index:
1:
2:
3:
4:
5:
6:
7: |
if($_GET[var]=="md5-string"){
include("datei.php");
}elseif($_GET[var]=="md5-string"){
include("datei2.php");
} u.s.w.
|
Nun brauchste in Deinem Fall aber nen Script das die Liste aktuell hält, o. machst es von Hand.
Hab das aber nun dynamisch gelöst und zwar ne Funktion erstellt das alles wegschnippelt was kein Buchstabe ist (geht von hinten nach vorn die Var durch). Desweiteren hab ich extra noch nen Array mit den Bösen zeichen erstellt also / und \ u.s.w., alles das wird entfernt und somit sollte das wenig Probs bereiten.
---
Ankauf leere Toner | Ankauf leere Tonerkartuschen
Diese Nachricht wurde geändert von: TeX |
 Profil
E-Mail
Website
Editieren
Zitieren
|
raiserle
Mausakrobat
Beiträge: 172 |
das mit der sql und dem md5-schlüssel hatte ich schon mal weiter forn erwähnt...
und was soll für die besucher da so schwer sein.....
ihm ist doch egal auf was er da rumklick, oder was in der uri steht.. er muss es ja nicht
verstehen, warum, wieso sich der link zusammensetzt.
...
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
Diese Nachricht wurde geändert von: raiserle |
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Das ist so nicht ganz richtig. Solange er nur rumklickt ist die URL relativ egal. Sobald er die URL weitergibt, oder sich daran "erinnern" möchte, sieht die Sache schon ganz anders aus.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
raiserle
Mausakrobat
Beiträge: 172 |
....
naja, so sehe ich das zwar nicht,a ber du hast in dem sinne ja recht...
aber in dem fall, könnte er entweder die url komplett unter favoriten legen,
oder
er weis halt den link
...
wenn das der fall ist, wird ja nix included
da müsste er halt den fehler abfangen und header("location: .....");
benutzen, das könnter auch verwenden, wenn einer nen reg=(md5, der nicht in mysql ist)
benutzen...
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich habe die Erfahrung gemacht das eine "hübsche" URL sowohl für Kunden wie auch Besucher sehr wichtig ist. Wir haben da bei unserem CMS inzwischen recht viel Arbeit investiert und die Kunden honorieren sie.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|