Dennis: Skript enthält Sicherheitslücke, NICHT VERWENDEN!

Beitrag lesen

Hi fastix®,

[x] gefixt. Danke!

„MyShellEscape()” - Autsch.

Abgesehen davon, dass deine Escape-Funktion jede Menge an Eventualitäten nicht berücksichtigt (Jonathan sprach das ja bereits an), wofür bringt PHP bitte schön eine Funktion escapeshellarg() mit?

Weiteres Problem: Unter SuSE hast du Glück, htpasswd2 existiert, liegt in /usr/bin und somit im Bereich von $PATH.
Unter Debian und Unbuntu sieht das anders aus, dort heißt das Tool (ja, auch bei Apache 2) htpasswd und wird somit von deinem Programm nicht gefunden.
Ich meine mich zu entsinnen, dass wenn man Apache selbst kompiliert zudem htpasswd standardmäßig in /usr/sbin landet und somit für einen normalen User nicht im Bereich von $PATH enthalten ist.

Warum willst du überhaupt htpasswd verwenden? Wie Sven bereits sagte, solltest du die Passwörter grundsätzlich erst mal auf MD5-Basis haschen, da diese Hashs sowohl unter Windows, wie auch unter Unix funktionieren (htpasswd -m ist dein Freund).
Da du die Benutzer ja sowieso manuell, also mit Lese- und Schreibbefehlen von PHP löschst, anstatt mit htpasswd, würde ich in diesem Fall dazu tendieren, die Benutzer auch mit reinem PHP anzulegen, wodurch du nicht vom von der Verfügbarkeit von htpasswd abhängig bist.
Eine entsprechende Funktion zum MD5-Hash für den Apache findest du hier.

Viele Grüße,
  ~ Dennis.