WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Nur bestimmte Variablen zulassen - Wie ??

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Nur bestimmte Variablen zulassen - Wie ?? - 21 Nov 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Nur bestimmte Variablen zulassen - Wie ??
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

Hallo,
ich übergebe die Variablen auf meiner seite in der Form

http://www.meineseite.de/seite.php?var1=1&var2=2&var3=3 usw usw.


wie bekomme ich es hin, daß ich nur solche Variablen zulasse, die ich vorher auch klar definiert habe ( also var1, var2 usw) ?

Ich hab es schon auf die art:

1:
if (isset($c) || isset($d) || isset ($e) .......) {echo "unzulässiger aufruf";}


natürlich ist das nur eine unzureichende Art, unzulässige Variablen zu eliminieren.

Dies scheint mir eine Art Sicherheitsrisiko zu sein, da ich im Netz Scripte gesehen hab, die sich auf den Server in der Form

www.meineseite.de/seite.php?c=img&name=wasweissich


einschleichen und z.B. Verzeichnisse durchstöbern können, PHP-Dateien auslesen etc.

Hat jemand eine Idee?


---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

  Profil   Website   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Das ist alles kein Problem, wenn du deine Variablen mit $_GET['var'] ausliest udn den Inhalt prüfst. Das einzige was dir in die Quere komem nkann ist register_globals = on, aber ich meine das kann man per htaccess abschalten?

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Du mußt einfach intern alle Variablen, welche du auch nutzt, zuerst initialisieren. Wenn jemand dann versuchen würde, über eine dieser Variablen Werte einzuschleusen, würden sie bei der Initialisierung einfach ersetzt werden.

Die erste Nutzung einer Variable in einem Script muss also immer eine Zuweisung oder eine Prüfung (gewollte Übergabewerte) sein.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

Hallo,
hab es jetzt anders gelöst:

1:
if (($_SERVER['argc'] !=0) && !isset($meinegewünschteVariable)) {echo"Unzulässiger Funktionsaufruf"; exit;}


So geht´s...

PS zur Info: die Var "$argc" ist eine vom PHP-Server vordefinierte Variable, welche die Anzahl der übergebenen Variablen ausgibt. Clever gemacht, die Jungs von PHP, ne?!

---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

Diese Nachricht wurde geändert von: dee123
  Profil   Website   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Ich versteh den Sinn nicht...

  Profil   Editieren   Zitieren
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

Na ist doch ganz einfach:
Es werden Variablen übergeben. Welche spielt erstmal keine Rolle.
Die Anzahl der übergebenen Vars wird gezählt ($argc)
Wenn die Anzahl ungleich (also auch größer) Null ist und die gewünschte Var nicht gesetzt ist, dann kommt die Meldung "Unzul. Aufruf".

Hintergrund hab ich doch oben schon erwähnt. Aber jetzt nochmal genauer:
Da kommt also ein Hacker daher und findet, daß meine Seite genau das richtige für seine Angriffe ist. Er tippt in die Adresszeile
h**p://www.meineseite.de/index.php?seite=h**p://www.hackerseite.de/hackertool.php.
Mit dem includetem Hackertool übergibt er die von Ihm definierten Variablen und kann u.a. meine Verzeichnisse auslesen, kopieren, Verbindungsdaten für die MySQL-Datenbank einsehen und so weiter.
Das find ich dann nicht so toll. Und deshalb hab ich mir gedacht: Wie kann ich die Vars des Hackers einfach unterbinden? Klar jetzt, oder? Das mit dem "?seite=h**t://...." hab ich in einem anderen Thread schon gelöst...


---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

  Profil   Website   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Das ist keine Lösung. Es werden ja keine unzulässigen Variablen genutzt sondern Variablen die du in deinem Script hast und nicht ausreichend prüfst oder Variablen die halt nicht sauber initialisiert werden, wodurch die übergebenen Werte genutzt werden.

In beiden Fällen sind die Variablen in Script und werden genutzt. Nur halt fehlerhaft.

argc und argv sind für Commandline-Scripte (php-cli) gedacht. Nicht für eine solche Prüfung.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

also, das verstehe ich jetzt nun wiederum nicht.
Was kann denn jetzt bei bösen Angriffen noch passieren? Hast du mal ein Beispiel?


---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

  Profil   Website   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Najam was bringt es einem Angreifer, wenn er noch die Variable sicherheitsleck=blaaaaa mit anhägt. Solange diese variable nicht in deinem Skript benutzt wird, nützt ihm das doch gar nichts. Das verbietet aber deine Prüfung. Ein wirklicher Angriff kann doch nur geschehen, indem der Inhalt der von dir benutzten Variablen geändert wird und da hilft deine Überprüfung gar nicht. Um einen Angriff dieser Art zu verhindern musst du lediglich den Inhalt der per Post und Get erstellen Variablen hinreichend prüfen und die zugelassenen Werte so weit wie möglich eingrenzen.

  Profil   Editieren   Zitieren
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

Jo, jetzt hab ich das verstanden. Es geht sich um den Inhalt der Variable.
Ich müsste also vor der Ausführung des Scripts eine Abfrage starten in der Form
1:
if ($seite="inhalt1" || $seite="inhalt2"........) { exec irgendwas } else { Abbruch}

Wobei "inhalt1" und "inhalt2" der von mir definierte Inhalt sein soll.

Hast du das so gemeint?

---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

  Profil   Website   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Du könntest auch Regular Expresions oder was auch immer für Prüfungsmechanismen benutzten. Aber so ist es schon richtiger als andersrum.

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Wichtig ist das solche Werte gründlich geprüft werden, bevor sie in einem include oder ähnlichem Landen. Bei einen Include hilft eine Whitelist (ein Array mit den gültigen Werten). Für andere Funktionen gibts es Escape-Funktionen (mysql_real_escape_string, escape_shell_args, ...)

Bei intern genutzten Variablen (also alles was nicht $_GET, $_POST, ... ist), sollte der erste Zugriff immer eine Zuweisung sein.

$myvar = 0;

---
Weaverslave

  Profil   Website   Editieren   Zitieren
dee123
Otto-Normal-Poster
Threadstarter




Beiträge: 63

Leute,
ich verzweifle....
Versuch schon das ganze verlängerte WE, den Variableninhalt so einzugrenzen, daß nichts anderes mehr möglich ist, als das von mir gewollte. ICH KRIEGS EINFACH NICHT HIN !!!!
Hab es mit nem Switch ( "Case 0: bis Case 1Mio) versucht, aber das kann es irgendwie auch nicht sein. Dann nochmal mit dem "ereg_replace(), preg_match() usw. Und dann hat mein Gehirn nur noch "tilt" angezeigt... Das wars.
Ich steig wieder auf das gute alte HTML um und erschieß mich danach.....



---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

  Profil   Website   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Moment, dann zeig doch mal bei welchem Aufruf du was begrenzen willst?

Tote gibts hier nicht, ich bin dein Schutzengel

Diese Nachricht wurde geändert von: languitar
  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Wahrscheinlich denkst du zu kompliziert.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
Seite 1 | 2 | 3  

Antworten
Forum » PHP & MySQL » Nur bestimmte Variablen zulassen - Wie ??

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Nur bestimmte Variablen zulassen - Wie ?? im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8126538    Heute : 456     Gestern : 463     Online : 199     21.11.2024    14:27      3 Besucher in den letzten 60 Sekunden        
alle 20.00 Sekunden ein neuer Besucher
Nach oben