Carsten: Sicherheitsrisko

Beitrag lesen

Hi Henryk,

if(!preg_match('#(\w+/)*\w+.\w+#',$incl))
  $incl='incl/news.inc';
lässt nur noch 'übliche' Dateinnamen durch, sonst wird eine Standard Datei eingebunden.

Also mein PHP matcht das auch hervorragend auf http://bla.blubb/foo weil du vergessen hast es zu verankern. Und weil sich bei solchen regulären Ausdrücken immer wieder gern Fehler einschleichen, würde ich eher zu $incl = basename($incl); raten und nur Namen im aktuellen (bzw. einem festen anderen) Verzeichnis zulassen. Das ist vergleichsweise narrensicher (und wenn da ein Fehler drin sein sollte, ist er von den PHP-Programmieren).

Verdammte Sch***. Das kommt davon wenn man Windows benutzt... (kein Webserver, kein PHP -> kein Test, ausserdem wars wohl zu früh..)

also '#^(\w+/)*\w+.\w+$#', mit basename() hast du natürlich recht, ich wollte halt eine 'plug in' Lösung ohne weitere Änderungen am Script.

Gruss,
  Carsten