zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP und URL Manipulation

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 13.12.2014, 15:36
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.497
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard PHP und URL Manipulation

Hallo,

nach einigem Studieren von PHP, Prüfung Übergabe Parameter und was alles "andere" so tun könnten, habe ich in einer Testumgebung mit PHP 5.6 angefangen zu experimentieren.

Frage 1:
Ich übergebe mehrere Parameter mit $_GET["xyz"] und prüfe diese auf Korrektheit im PHP Modul. Alles I.O. und funktioniert, keine anderen als die erlaubten Parameter werden akzeptiert.
Verändere ich jetzt die aufrufende URL mit (den gängigen) Nullbyte Definitionen ist auch alles I.O. Die Fehlerroutinen fangen das hervorragend ab.
Verändere ich jetzt die aufrufende URL mit unsinnigen Werten ist auch alles I.O. Die Fehlerroutinen fangen das hervorragend ab.
Verändere ich jetzt die aufrufende URL mit "#00" bekomme ich nur eine leere weiße Seite in verschiedenen Browsern?
Was ist "#00" für ein Problem in der URL?

Frage 2:
Gibt es einen Weg nur mit PHP ein Formular Reload mit veränderter URL zu verhindern.
Beispiel:
Admin Interface, Benutzer ist angemeldet und löscht eine Inhaltsseite die er löschen will und darf. Verändert man die URL auf eine andere Inhaltsseite, die der Benutzer ebenfalls löschen darf aber nicht löschen will und drückt im Browser F5 wird diese Inhaltsseite nach dem Reload gelöscht.
Ist es möglich das ohne AJAX oder JS oder .NET nur mittels PHP eigener Funktionen zu verhindern?

Gruß

PS: Es geht um die Portierung eines CMS-System von PHP 5.2 auf PHP 5.6 mit kompletter Überarbeitung des Administration Interfaces.
__________________
Personal stuff

Geändert von laborix (13.12.2014 um 15:38 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 13.12.2014, 15:43
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Verändere ich jetzt die aufrufende URL mit "#00" bekomme ich nur eine leere weiße Seite in verschiedenen Browsern?
Was ist "#00" für ein Problem in der URL?
Gar keins - das leigt an deinem skript. Bist du sicher, dass du auch die Fehlermeldung immer siehst?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 13.12.2014, 16:08
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.497
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Bist du sicher, dass du auch die Fehlermeldung immer siehst?
Ja, error_reporting(E_ALL) ist in jedem PHP-Modul beim Testen eingestellt.

Das interessante hierbei ist dass das nur im Backend (Administration Interface) auftritt, im Frontend wird diese URL mit #00 vom CMS eigenen Fehlersystem auf eine CMS eigene 404er Seite geleitet.

Das mit der URL Manipulation ist ein schöner Müll, noch mehr wenn man es versucht alles zu verhindern.
__________________
Personal stuff
Mit Zitat antworten
  #4 (permalink)  
Alt 13.12.2014, 17:52
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.997
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Ist es möglich das ohne AJAX oder JS oder .NET nur mittels PHP eigener Funktionen zu verhindern?
Du kannst ein erneutes Ausführen bzw. Versenden des Fomulares über einen Redirect (auf eine beliebige Seite) verhindern. Bei dem Redirect gehen die Daten in $_POST oder $_GET aus dem Fomular verloren.
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #5 (permalink)  
Alt 13.12.2014, 18:54
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Ja, error_reporting(E_ALL) ist in jedem PHP-Modul beim Testen eingestellt.
Dann ist eine leere Seite unwahrscheinlich. Bau mal mit Absicht einen Syntaxfehler ein, wird dieser angezeigt?
Mit Zitat antworten
  #6 (permalink)  
Alt 13.12.2014, 20:12
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.497
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
Du kannst ein erneutes Ausführen bzw. Versenden des Fomulares über einen Redirect (auf eine beliebige Seite) verhindern. ...
Das muss ich mal recherchieren, ich hatte es über eine Session Variable am Laufen. Leider funktionierte das nicht immer richtig, danach habe ich es sein lassen.

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Bau mal mit Absicht einen Syntaxfehler ein, wird dieser angezeigt?
Du bringst mich auf eine Idee. Ich habe einen eigenen URL- und Eingabenfilter geschrieben, also alles manuell und Handbetrieb. Wahrscheinlich filtere ich das "#" zuerst, bevor ich Nullbytes filtere. Ich werde das testen und Bescheid geben.

Das CMS ist nur reines PHP, kein Javascript, kein sonstiges Framework und Eigenentwicklung.
__________________
Personal stuff
Mit Zitat antworten
  #7 (permalink)  
Alt 13.12.2014, 20:32
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Du bringst mich auf eine Idee. Ich habe einen eigenen URL- und Eingabenfilter geschrieben, also alles manuell und Handbetrieb. Wahrscheinlich filtere ich das "#" zuerst, bevor ich Nullbytes filtere. Ich werde das testen und Bescheid geben.
Was heißt filtern?
Wenn du das im Browser eingibst schickt er das Zeichen nicht zum Server, d.h. du musst es muss URL kodiert eingeben. Aber das erklärt nicht die weisse Seite. Das ist ein Zeichen, dass der Server Fehler nicht anzeigt. U.u. ist das überschrieben von error_reporting zur Laufzeit nicht erlaubt. Daher meine vorschlag, dass du einen Fehler einbaust.

Das du aber mit dem Browser sowas nicht testen kannst ist dir aber auch bewußt?
Dieser filtert deine Eingabe, ein Hacker macht einen Angriff nicht über den Browser.
Mit Zitat antworten
  #8 (permalink)  
Alt 13.12.2014, 20:58
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.497
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Was heißt filtern? ...
Jede Eingabe, jeder GET/POST, jeder dynamisch generierte Link im Admin Interface und jede direkte Aktion wie Inhalte laden, bearbeiten, schreiben, verschieben oder löschen. Nur beim Hochladen von Dokumenten, Bildern oder Multimedia Inhalte gibt es Lücken die man mit reinem PHP nicht eindeutig überprüfen kann.

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Dieser filtert deine Eingabe, ein Hacker macht einen Angriff nicht über den Browser.
Eigentlich habe mich an folgender Seite für das CMS orientiert :
https://www.owasp.org/index.php/PHP_...ty_Cheat_Sheet
sowie einige Seiten von IBM und MS. Irgendwie so alles was mir mitteilt, was "andere" mit dem CMS/Server tun könnten.
__________________
Personal stuff

Geändert von laborix (13.12.2014 um 21:02 Uhr) Grund: Textkorrektur
Mit Zitat antworten
  #9 (permalink)  
Alt 13.12.2014, 21:59
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Eigentlich habe mich an folgender Seite für das CMS orientiert :
https://www.owasp.org/index.php/PHP_...ty_Cheat_Sheet
sowie einige Seiten von IBM und MS. Irgendwie so alles was mir mitteilt, was "andere" mit dem CMS/Server tun könnten.
Naja, das ändert nichts an dem was ich gesagt habe, mit dem Browser kannst du sowas nicht simulieren. Der filtert deine Eingabe.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 14.12.2014, 12:19
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.497
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... mit dem Browser kannst du sowas nicht simulieren. ...
Zur Info: nachdem ich heute Morgen meinen Filter umgeschrieben habe, passiert mit dem #00 nichts mehr. Wird sauber abgefangen und auf die CMS eigene 404er Seite geleitet. Diese Fälle passieren nur im Admin Interface, also wenn man angemeldet ist. Im Frontend ohne Anmeldung wird alles auch auf die CMS eigene 404er Seite geleitet

Lustig dabei, ein neuer Umstand mit Internet Explorer 11 und SeaMonkey 2.31.
Test URL: http:/../rev37/admin/panel.trashmgmt.php?page=code-samples.txt%00&action=sendtotrash&lang=en

Test 1:
Server: Windows Server 2012 R2 mit Apache 2.4 und PHP 5.6
Client: Internet Explorer 11 Windows 8.1

Mit %00 jetzt eine weiße Seite und mit Logeintrag HTTP/1.1" 200 und Quellcode der weißen Seite:
HTML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
Test 2:
Server: Ein Provider mit Linux, Apache und PHP 5.6
Client: SeaMonkey 2.31 ohne Javascript

Mit %00 jetzt eine weiße Seite und kein Quellcode

Egal, ich werde weiter testen/entwickeln bis das alles sauber läuft. PHP 5.6 EOL ist erst Mitte 2017, bis dahin geht noch viel Zeit ins Land
__________________
Personal stuff

Geändert von laborix (14.12.2014 um 12:24 Uhr) Grund: Ergänzung: PHP 5.6 vergessen beim Provider
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Darstellungsprobleme im IE lea11011989 CSS 17 05.11.2010 09:44
Frage zu horizontalen Linien marvin1989 CSS 3 29.12.2009 23:35
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
Problem mit Layout .. vermute: float Küspert CSS 3 09.12.2006 17:09
Bilder werden überlagert und verschoben. Küspert CSS 5 07.12.2006 17:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:05 Uhr.