Rolf B: Mysql: Tage zwischen 2 Datumsangaben auflisten

Beitrag lesen

Hallo juppix,

ich war seit Donnerstag nachmittag offline und konnte darum nicht antworten. Gut, dass Du den Formatierfehler selbst gefunden hast 😀

Ein kleiner A-Bär brummt aber in meinem Kopf herum. Die mysql-Schnittstelle ist seit PHP 5.5. missbilligt (deprecated) und mit PHP 7 nicht mehr Teil von PHP. Das solltest Du zumindest auf mysqli ändern, oder gleich auf PDO umsteigen.

Vor allem hat der kleine A-Bär noch einen großen Bruder, der soeben sein Maul aufreißt, um Dir die Finger abzubeißen: Du verwendest einen per URL-Parameter übergebenen Wert und überträgst ihn ungeprüft und unmaskiert in dein SQL. Wenn Dir jemand den String ; DROP TABLE items -- übergibt, ist deine Datenbank futsch.

Grundhaltung des UI-Programmierers soll sein: Der User ist dein Feind und will Dich vernichten. Schütze Dich davor. Prüfe jeden Wert auf Plausibilität. Wenn Du Userdaten irgendwohin überträgst, entferne oder maskiere Zeichen, die im Zielkontext Schaden anrichten können. Denn dein User ist dein Feind und wird diesen Schaden verursachen, wo immer Du ihn lässt. PHP bietet dafür eine Menge Mittel an. Und unser Wiki hat dazu auch was.

Im vorliegenden Fall reicht ein einfaches intval(), um Angriffe über den Jahreszahl-Parameter zu entschärfen.

Mit mysqli oder PDO kannst Du auch auf gebundene Parameter umsteigen und musst sie nicht mehr statisch ins SQL einsetzen.

Rolf

--
sumpsi - posui - clusi