kostenloser Webspace werbefrei: lima-city


Sicherheit eines GET-Controllers

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    Hallöle,

    Ich bin derzeitlich dabei meine seite von Buggs zu reden ;-).

    Und ich weiß nicht ob durch mein GET System was ich gemacht habe nicht irgendwie ein sicherheits risiko enstehen könnte.

    Könnte sich das jemand bitte mal ansehen?

    http://privatecitypage.pastebin.com/DFKDnKKZ


    Sicherheit geht vor ;-).

    Beitrag zuletzt geändert: 18.3.2010 1:09:39 von privatecitypage
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hm, ich konnte da keine sicherheitslücke feststellen...

    wenn du bereiche hast, wo du nciht willst, dass die einfach so angebrowst werden können, solltest du das später als Bedingung noch abfangen^^

    als einzies würd ich sagen:

    statt require einfach require_once schreiben... generell jetzt meine ich...

    vergleich es einfach mit printf und cout in c++... das eine ist einfach lästig, das andere elegant^^
  4. Also ich hab mir den Code auch angesehen, aber konnte ebenfalls wie sebulon keine sicherheitslücke erkennen. Du prüfts ja ohnehin die "Eingabe". Von wo kommt der GET-Parameter? Theoretisch könntest du die Datei auch mittels POST-Methode übergeben, dann bleibt der Parameter für den Benutzer unsichtbar und kann den Parameter in der URL nicht verändern.
  5. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    :-/.

    Danke Sebulon werde ich machen ;-).
  6. Allein vom draufsehen her:

    Du solltest dir unbedingt einige Sachen abgewöhnen:
    @s, wo sie unnötig sind. empty() wird dir kaum einen Fehler werfen. Auch file_exists sollte keinen werfen.
    Die ganzen () weglassen:
    Statt
    $datei = ("index");
    nur
    $datei = "index";
    Auch bei den PHP Sprachkonstrukten (KEINE Funktionen!) wie echo und require sollte man die Klammern weglassen.

    So sähe das dann aus:
    http://privatecitypage.pastebin.com/fLGu2kyf

    Was die Sicherheit angeht. Überleg mal, was passieren würde, wenn ich &site=../geheime-datei-auf-die-ich-eigentlich-uebers-netz-kein-zugriff-haette-php-aber-zugriff-hat. Dann würde die Datei './geheime-datei-auf-die-ich-eigentlich-uebers-netz-kein-zugriff-haette-php-aber-zugriff-hat.php' aufgerufen werden, was eigentlich nicht erwünscht ist ;)

    Beheben kannst du es, indem du noch ein basename() auf das $_GET['site'] anwendest ;)
    So: http://privatecitypage.pastebin.com/GMLi0dmb

    Beitrag zuletzt geändert: 18.3.2010 14:45:50 von nikic
  7. @ nikic:

    die Basename geschichte ist nicht unbedingt geeignet, wenn er noch eine recht komplexe Unterstruktur baut... da wir nicht wissen, was er vorhat, sollte man auch nix an tipps geben, was ihn einschränkt... wenn er versteckte Dateien hat, kann er die durch einen einfachen if-Block rauskicken vorher ;-)

    und wenn er richtig paranoid ist, lässt erden inhalt der php-Dateien verschlüsseln und übergibt nur bei Autorisiertem Zugriff den shclüssel, um die Dateien zu entschlüsseln ;-)

    und die geschichte mit den überflüssigen Syntax-Zeichen ist einfach geschmackssache... wenn er den Code so besser lesen kann, soll er es doch so schreiben ;-)


    eine kleine Sache noch: es ist hilfreich, Kommentare zu liefern... zwar macht es bei so einem kleinen offensichtlichen Script keinen sinn, aber wenn du Sachen übergibst oder von irgendwo einliest, ist es ganz praktisch, als Kommentar dazuzusetzen, welcher Art dieser Import ist oder was mit dem Export geschieht...

    du hast es schon bei der get-geschichte gesheen, dass die Frage kam, wo das herkommt ;-)

    Beitrag zuletzt geändert: 18.3.2010 15:04:06 von sebulon
  8. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    das mit den kommentaren ist eine super idee.

    Ich Verliere nähmlich oft die überssicht über die Codes.

    Also Nikic:

    Danke Erstmal.

    Das Mit den () mach ich mit absicht. weil ich mich so besser finden kann ;-).

  9. @sebulon:

    pcp, könntest du sagen, ob du Unterordner einbeziehen willst?

    Ansonsten, es ist ein wirklich hochgradiges Sicherheitsrisiko auf höher liegende Ordnerebenen Zugriff zu erlauben, sebulon.

    Verschlüsslung usw. ist natürlich völlig unnötig, das Script wie es jetzt ist, erlaubt mir aber alle PHP-Scripte einzubinden. Nicht gut. Das können welche sein, die über .htaccess geschützt wurden, usw.

    Zu der Syntax: Nun, zusätzliche Paranthesen sind nicht einfach Syntax-Sugar. Abgesehen davon, dass Nutzung der Sprachkonstrukte ohne Klammern schneller ist (aber das ist nebensächlich), vermeidet man damit Probleme. Wenn man überall seine Klammern benutzt und dann irgendwann stundenlang debuggt, weil man sowas wie return(&$var) geschrieben hat, ist man selber schuld.
  10. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    :-/.


    Also das ich unter ordner benutze könnnte sicherheits risiken haben?
  11. kann sein, muss nciht sein.

    um das zu verhindern wäre es am besten, die sicherheitsrelevanten Relevanten Scripte in einem eigenen Ordner Unterzubringen und über ne einfache If-Bedingung kannst du die dann einfach rausfiltern...

    von daher verstehe ich nikics Problem nicht...
  12. Der Zugriff auf Unterordner ist ja gerade unproblematisch ;) Der Zugriff auf übergeordnete Ordner aber ;)
  13. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    hab den überordner den Chmod 711 gegeben ;-).
  14. dann wirds da auch keine Probleme geben, wie nikic bereits eingeräumt hatte ;-)


    du musst nur beachten, dass du wirklich-if-Filter setzt... am besten auch, wenn nichts sicherheitsrelevantes da ist... denn dann kannst du die Leute gleich abfangen und sagen, dass sie z.b. auf eine ungültige Seite zugreifen wollen und direkt auf den index umleiten^^
  15. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    xD ok.

    aber basename sollte das doch eig selbst hinbekommen oder?
  16. wie gesagt: wenn du basename im Filter verwendest, schnedet er dir die Unterodner weg...

    solange du keine verwendest, ist das schön und gut...

    aber ansonsten solltest du über ein Split an den / nachdenken^^ dann ist dein letztes element der Dateiname mit einem möglichen Querystring...
  17. Autor dieses Themas

    privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    Also Meine Seite wird im Ordner ./seiten/ ausgeführt ;-).
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!