| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Benutzer Registriert seit: 12.04.2011
Beiträge: 50
PHP-Kenntnisse: Fortgeschritten ![]() | Hallo und Frohe Weihnachten (nachträglich)! In den letzten Tagen habe ich mir über ein konzeptionelles Problem hinsichtlich Anwendungssicherheit bzw. Datenvalidierung für ein Onlineportal (Kundenprojekt) den Kopf zerbrochen. Alle genutzten "eingehenden Daten" (d.h. $_GET, $_POST, $_COOKIE und manche Elemente aus $_SERVER) werden vor Ausführung der eigentlichen, HMVC-basierten, Anwendungslogik zentral vorvalidiert (eine strengere Validierung entsprechend dem jeweiligen letztendlichen Verwendungszweck der Information erfolgt innerhalb des Controllers). Ein Beispiel für eine solche Vorvalidierung wäre, dass $_GET-Elemente lediglich Alphanumerische (+ Deutsche Umlaute) Zeichen enthalten dürfen. Im Controller kann der Programmierer nun z.B. noch definieren, dass es sich nur um einen positiven ganzzahligen Wert 0 <= x < 10.000 handeln darf. Das Vorgehen bei einer Verletzung der (sehr genau festgelegten) Validierungsregel innerhalb des Controllers ist klar. Die Ausführung der Anwendungslogik wird unterbrochen und ein spezieller ErrorController wird ausgeführt. Nun stellt sich mir die Frage wie ich in der Vorvalidierungs-Klasse am Besten vorgehe. Sollte ich versuchen die Eingaben zu säubern, sie also in gemäß meiner Spezifikationen valide Inhalte transformieren, auch auf die Gefahr hin, dass sie absichtlich eingegeben wurden, um die Systemsicherheit zu testen / zu gefährden. Vorteil hier wäre die Benutzerfreundlichkeit, da eventuelle Fehleingaben (z.B. ein Ausrufezeichen in einem Alphanumerischen Feld) einfach weggefiltert werden, ohne das der Benutzer eine Fehlermeldung erhält und dementsprechend nicht im Arbeitsablauf gestört wird. Auf der anderen Seite könnte ich mich dafür entscheiden, bei einem Verstoß gegen meine Spezifikationen direkt die Anwendungslogik abzubrechen und eine Fehlerseite anzuzeigen. Grundlage der Entscheidung zu diesem Vorgehen wäre, dass non-valide Daten die auf das passende Format zurechtgestutzt werden, trotzdem nicht die vom Benutzer erwarteten Ergebnisse erzielen würden. Auch könnte es sich um sinnfreie Daten handeln, wie oben bereits beschrieben. Nachteil hier ist natürlich die BenutzerUNfreundlichkeit. In meinem Kopf streiten sich gerade Engelchen und Teufelchen was ich denn nun tun sollte Danke hierfür im Voraus!
__________________ root@php.de:~$ rm -rd / |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Gast
Beiträge: n/a
| Danke gleichfalls. Zitat:
http://php.net/rawurlencode | |
|
| | ||
| Benutzer Registriert seit: 12.04.2011
Beiträge: 50
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
__________________ root@php.de:~$ rm -rd / | |
| | |
| | |
| Benutzer Registriert seit: 12.04.2011
Beiträge: 50
PHP-Kenntnisse: Fortgeschritten ![]() | Könntest du dich bitte etwas verständlicher Ausdrücken? Hier mal ein kleiner Auszug aus meinem Code: PHP-Code:
__________________ root@php.de:~$ rm -rd / |
| | |
| | |
| Erfahrener Benutzer | Pre-Validation die außerhalb der gesamtlogik passiert ( meinetwegen schon im Bootstrap der Anwendung oder als eigene vorgeschaltete Library ), die Superglobals "überarbeitet" würde bei mir InvalidArgumentExceptions statt den eigentlichen Werten übergeben. Das Inbound-Konzept der Anwendung müsste nur entsprechend dem gelieferten Interface reagieren, Die Exception entweder weiterreichen oder direkt abfeuern. Alles in allem würde ich aber auf keinen Fall den Wert der meine Anwendung kompromitieren könnte, an meine Anwendung ranlassen ( wollen ).
__________________ |
| | |
| | |
| Benutzer Registriert seit: 12.04.2011
Beiträge: 50
PHP-Kenntnisse: Fortgeschritten ![]() | Die Gefahr der Kompromitierung existiert ja nicht (mehr), da die Daten im gegebenen Beispiel nun lediglich a-zA-Z0-9 => alphanumeric sein können. Die Frage ist nur, ob es Sinn macht, hier eine "heile Welt" anzunehmen und mit den gesäuberten Daten die Programmlogik weiterlaufen zu lassen.
__________________ root@php.de:~$ rm -rd / |
| | |
| | |
| Erfahrener Benutzer | Informier die Anwendung doch das dort gesäubert wurde ( wie oben beschrieben ), dann kannst du zumindest Anwendungszentral mitloggen was die Anwendung auch betrifft. Wenn du keine Exceptions dafür weiterreichen willst ( weil du Werte säuberst und doch weiterreichts ) würde ich zumindest ein Interface implementieren das die Anwendung ein Subject aggregiert und deinem Validator einen Observer, der diese Exceptions der Validation "zur Kenntnisnahme" piped.
__________________ |
| | |
| | |||
| Moderator und Wett-König | Zitat:
Sobald es im Rahmen einer HMVC-Implementierung um die Prüfung von konkreten Eingaben angeht, ist immer diejenige Komponente dafür zuständig um die es gerade geht. Diese "kennt" ihre Business-Prozesse, ihre validen und nicht validen Eingaben und kann entsprechend reagieren. Aus Usability-Gesichtspunkten möchte der Benutzer doch keine globale Fehler-Seite angezeigt bekommen, wenn er statt einer "1" eine "5" eingegeben hat. Zitat:
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Erweiterung um Autologin - Validierung, Logik ? | hausl | PHP Einsteiger | 36 | 30.11.2011 10:22 |
| Meine Formular Validierung (4) | elf | PHP Tipps 2010 | 36 | 15.11.2010 18:18 |
| Meine Formular Validierung (3) | elf | PHP Tipps 2010 | 17 | 01.11.2010 12:32 |
| Meine Formular Validierung (2) | elf | PHP Tipps 2010 | 7 | 20.10.2010 22:14 |
| [Erledigt] Meine Formular Validierung | elf | PHP Tipps 2010 | 23 | 17.10.2010 15:23 |
| Validierung | Sascha Ahlers | Wiki Diskussionsforum | 5 | 17.06.2010 14:43 |
| [Erledigt] HTML Validierung meckert über link | tkausl | PHP Tipps 2010 | 21 | 07.03.2010 22:31 |
| [Erledigt] Bitte um Hilfe bei Validierung meines Scriptes | ePole | PHP Tipps 2010 | 22 | 24.02.2010 16:11 |
| utf-8 validierung mit reg. Expr. | nikosch | PHP Tipps 2010 | 6 | 27.01.2010 15:53 |
| Validierung !is_array($_POST['Vorname']) testen | kurtmos | PHP Tipps 2009 | 16 | 30.12.2009 19:48 |
| [Erledigt] Mail Validierung MX Record Abfrage sinnvoll? | Ennosuke | PHP Tipps 2009 | 7 | 21.10.2009 17:55 |
| dynamischer Bildupload + -validierung | Knutschi | PHP Tipps 2009 | 12 | 11.05.2009 22:28 |
| Formulargenerierung + Validierung | cp_toby | Software-Design | 11 | 01.03.2009 22:02 |
| [Erledigt] Validierung mit Arrays | vyo | PHP Tipps 2008 | 4 | 27.12.2008 18:39 |
| Formular und fehlermeldung--> Eingabedaten weg | nieselfriem | PHP Tipps 2005-2 | 8 | 16.06.2005 10:38 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| was ist besser anwendungssicher oder fortgeschritten, php anwendungssicherheit, php datenvalidierung klasse, php datenvalidierung, software design anwendungssicherheit fehler, php eingabedaten |