T-Rex: Array Key exists

Beitrag lesen

nun, einer der Arrays, die man von "außen" (also seitens des Clients) beeinflussen kann, ist $_POST. Wenn du versuchst, auf z.B. $_POST['meinkey'] zuzugreifen, der Client diesen Schlüssel aber nicht übermittelt hat, dann gibt es, wie du bereits bemerkt hast, eine Notice.

Nun ist es zunächst einmal so, dass in $_POST prinzipiell erstmal alles drinstehen kann. Du erwartest wahrscheinlich die Daten eines bestimmten Formulars, aber Requests kann jeder an jede URL stellen, dass muss nicht "von einem Formular" kommen. Wenn die Daten nicht komplett sind (also ein Feld nicht übermittelt wurde, was du aber erwartest), ist der Request des Clients fehlerhaft. Du willst diesen Fehler aber nicht ignorieren, sondern abfangen und dem Client einen Fehler bekannt geben. Und das überprüfst du z.B. mit (array_)key_exists. Die Notice hilft dir also dabei, potentielle Fehler besser zu finden.

Um das ausnützen zu können, musst du aber noch andere Fehler machen. Diese resultieren daraus, dass du in einem Feld einen Wert erwartest, der nicht vorhanden ist, und dann mit dem erwarteten Wert arbeitest. Division durch Null (ein nicht vorhandenes Feld) wäre ein Beispiel, was mir so auf Anhieb einfiele, wo du am Ende grob falsche Ergebnisse bekommst.

Wenn ein Key in $_POST nicht gesetzt ist, ich das nicht abprüfe und eine notice geworfen wird, kann man diese information gegen mich verwenden? Ist das System dann anfällig für Angriffe?

Man könnte ja mittels "error_reporting(E_ALL ^ E_NOTICE);" alle notice Anweisungen einfach unterdrücken. Mal davon abgesehen dass dies kein guter Programmierstil ist, gibt es noch einen Grund dies nicht zu tun? Also Sicherheitstechnischer art?

Gruß
noch nicht befriedigt mit der Antwort
T-Rex