ich suche vergebens deine icq nummer
THEMENSTARTER
ich suche vergebens deine icq nummer
Nu bin ich gespannt: Wieso sollte man Shell_Exec vermeiden?
Kein Support per PN. :)"Kaum machstes richtig - schon funktionierts!"
ICQ 442-918
IntelliTool Auto Upload Bot
Weil shell_exec ein Sicherheitsrisiko darstellen kann (nicht zwingend muss). Deswegen sollte man es auch nur dann anwenden, wenn es gar nicht anders möglich ist und man weiß was man macht.
Ein Fall wo es z.b. wäre: man hat in einer Variable, die bei Shell_exec verwendet wird, einen Userinput dabei, der nicht ausreichend geprüft wird.
Im Prinzip dasselbe wie bei ner plain-sql query mit Userinput. In beiden Fällen hängts davon ab, was der Coder davor für Überprüfungen gemacht hat (für zulässige Inputs) oder überhaupt nur fixe Inputs zulässt (im Code festgelegt).
// Ist sehr wahrscheinlich etwas, dass du direkt schon voraussetzt, aber der ein oder andere gar nicht beachtet.
In shell_exec sehe ich keinerlei Risiko. Ob nun der Server minderwertig gesichert ist, oder das Script ... der Webservice läuft unter restricted User. Wenn also wer den Server anhand einer Injection hackt, dann kommt das dem Ausnutzen von shell_exec gleich.
SzeneBox.org bei Telegram https://t.me/szenebox
Ne, ist absolut kein Risiko in einem PHP Script![]()
Schon mal diese 2 Zeilen ausprobiert?
oderCode:$var = ""; // beliebige variable var_dump(exec($var));
Sowas nennt man dann "Risiko", weil eventuell möchte man nicht, dass der User sich den gesamten File-Tree ansieht (einfachstes Beispiel). Darum rät man auch gerne davon ab es zu verwenden, oder es nur dann einzusetzen, wenn man weiß was man macht (Inputvalidierung).Code:$var = ""; // beliebige variable mit parameter var_dump(exec(ls . $var));
// Wir stellen uns einfach vor das $var wäre mit einem $_GET oder $_POST Parameter befüllt.
Damit ein Besucher PHP-Quellcode ändern kann, müsste er den Server / Script gehackt haben. Und dann ist eh alles verloren. Ob schwach geschützter Server oder Script - läuft beides aufs gleiche raus.
SzeneBox.org bei Telegram https://t.me/szenebox
Wenn man einen Command-Befehl hat, der eine Variable beinhaltet die frei vom User gewählt wurde, ermöglicht man ihm (ohne weitere Absicherung, wie Validierung) die Fähigkeit den Befehl beliebig zu erweitern.
Dazu muss man nichts hacken.
Was auf unzureichende Entwicklung zurückzuführen ist.
SzeneBox.org bei Telegram https://t.me/szenebox
Was genau einer der Punkte ist weswegen man Leuten davon abrät diesen Befehl zu nutzen, um so keine mögliche Angriffsfläche zu bieten.
Man kann das "Risiko" bei der Verwendung nicht einfach relativieren oder gar streichen.
Wer Werte aus $_GET oder $_POST ungefiltert verwendet hat eh die Kontrolle über sein Leben verloren.
- - - - - - - - - - Beitrag nachträglich erweitert - - - - - - - - - -
Um noch etwas Konstruktives hinzuzufügen:
SQL darf auch nicht mit ungefiltertem Userinput gefüttert werden. Trotzdem rät man nicht generell von SQL ab.
PHP: escapeshellarg - Manual
PHP: escapeshellcmd - Manual
Geändert von HaZe (20.10.2016 um 23:53 Uhr)
Kein Support per PN. :)"Kaum machstes richtig - schon funktionierts!"
ICQ 442-918
IntelliTool Auto Upload Bot
Ja, aber warum denn Syr? Es ist doch ohne Probleme nutzbar. Jetzt auf einmal muss man sich doch des Risikos bewusst sein? Das war genau der Teil, der bei deinem ersten Kommentar gefehlt hatMan kann shell_exec ohne Probleme anwenden wenn man sich bewusst ist welche Risiken es birgt. Das Informieren über Risiken ist etwas, dass viele Frischlinge und selbst ein Teil der erfahrenen Leute unterlassen.
Die Frage war, weswegen man es nicht nutzen sollte und die Antwort war auch, wenn man nicht genügend Hirn hat, sollte man es lassen.
Würde ich es persönlich unter Voraussetzung der Asicherung verwenden? Ja, denn die Laufzeit ist wesentlich geringer. Würde ich es jedoch auf biegen und brechen verwenden? Nein.
@HaZe:
Danke für deine Ergänzung, anscheinend hat es sich zu allgemein gelesen. Erst bei Syr kritisieren, dass er früher etwas nicht im Text erwähnt hat und dann selbst das gleiche machen. Ich füge jetzt an der Stelle noch was dazu (editierter Text, weil erst unlogischer Zusammenhang):
Häufig wird dazu geraten, für jede Kleinigkeit eine Alternative und nicht den direkten Weg zu nehmen. An der Stelle hätten wir "verwende immer Prepared Statements", verwende immer Wrapper, nutze möglichst nie exec (usw.). Für Frischlinge und Leute die sich nicht viel mit dem Thema auseinander setzen ist sowas oft besser (können auch Probleme entstehen). Bei Experten die ein Schweizer-Taschenmesser entdecken kann es passieren, dass sie gar nicht mehr auf Alternativen achten, bei denen z.b. die Validierung schon beinhaltet ist.
An der Stelle aber jetzt genug von mir davon, ansonsten findet sich hier noch ein Text über mehrere Seiten wieder, der "sinnvolles" und "nicht sinnvolles" verwenden von Funktionen beinhaltet. Gibt ja viel darüber zu sagen.
Interne Übertragung
Läuft seit Jahren im Hintergrund mit. Jetzt kommt der Neubau.