2017-01-16 5 views
-1

Hallo auf meinem PHP-Projekt Der Benutzer senden den Namen des Themas (es ist ein Telegramm Desktop-Theme Maker) über Formulareingabe. (Das Projekt wird auf GitHub Github Project gehostet) Das Problem ist: Ich benutze dies in den Namen des Themas der Benutzer könnte möglicherweise auf jeden Ordner auf dem Server zugreifen. Ich versuchte es mit diesem begehen zu korrigieren: Github commitPfad Injektion in Benutzereingabe

$theme_name = str_replace("/", "_badyou_", $_GET["name"]); //contains the good themename 

ich nur den Namen müssen so dachte ich, dass die Beseitigung der „/“ genug ist. Aber ich brauche die Meinung von jemandem, der Php besser kennt als ich.

P.S tut mir leid für mein schlechtes Englisch. Vielen Dank im Voraus.

+1

Hat Ihr Code einen Mechanismus, um Fehler an Benutzer zu melden? Ich denke, es ist einfacher für jeden, schlechte Eingaben einfach mit einer richtigen Fehlermeldung abzulehnen, anstatt die Benutzereingaben nach dem Zufallsprinzip zu ändern. nicht zu vergessen, dass Black-List-Ansätze zum Scheitern verurteilt sind. –

Antwort

0

In den vergangenen Tagen sah ich, dass mit dem folgenden Code ist genug.

$theme_name = str_replace("/", "_badyou_", $_GET["name"]); //contains the good themename 

$ theme_name für die Erstellung der Datei wie /dir_to_folder/$theme_name/$theme_name.tdesktop-theme

Jemand hat bereits versucht, mein Dateisystem angreifen und sie scheiterten, weil die Funktion das ändert "/" Zeichen mit "badyou" macht es harmlos. Das ist auch möglich, weil ich keine Datenbank verwende. Ich hoffe, dass dies jemandem helfen wird.

0

Nun, es scheint, Sie versuchen, Ihren Code vor Code-Injection-Angriffen zu schützen. Code-Injection ermöglicht es dem Angreifer, die Ausführung von bösartigem Code zu erzwingen. Dies kann durch die Weitergabe von Schadcode in der URL erfolgen. Siehe diesen Link für weitere Informationen: https://www.owasp.org/index.php/Code_Injection. Siehe auch diesen Link: http://www.derby-web-design-agency.co.uk/blog-post/what-is-and-how-to-prevent-url-injections-in-php/11/

Um Code-Injektion zu verhindern, sollte der Entwickler alle Eingaben validieren, die an die Anwendung gesendet werden. PHP bietet mehrere Funktionen zur Validierung und Desinfektion von Daten. Zum Beispiel: trim(), strip_tags(), htmlentities() und mysqli_real_escape_string()

+1

Fast jede Injektionslösung, die ich jemals gefunden habe, die das Wort "Desinfektion" enthält, war falsch. Die vorgeschlagenen Funktionen können ihre Anwendungsfälle haben, aber zufällige Anwendung (oft einige von ihnen zur gleichen Zeit) wird normalerweise nur Daten korrumpieren und ich kann nicht herausfinden, wie einige von ihnen schließlich bei der Injektion von Dateisystempfad helfen können. –

+0

Sie können die Funktion filter_input versuchen. Es filtert die $ _GET-Array-Variablen mit bestimmten Filtern je nach Bedarf. Siehe: http://php.net/manual/en/function.filter-input.php –