bilder schützen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bilder schützen

    Hallo mal wieder...

    ich hab mir da was schickes gebastelt und zwar können sich meine User Bilder in einzelne Sets erstellen.

    Für jeden user wird ein Ordener erstellt und vür jedes Bilderset ein Unterordner und dort rein kommen die Bilder.

    Bsp: /Nordin/45/ (username/set_id/)

    Wenn man jetzt ein Bildlink kennt zum Beispiel:
    www.xxx.xx/bildesets/Nordin/45/545654.jpg

    Dann kann man ja durch testen andere Bilder suchen... bsp:
    www.xxx.xx/bildesets/Nordin/45/545653.jpg
    www.xxx.xx/bildesets/Nordin/45/545654.jpg
    www.xxx.xx/bildesets/Nordin/45/545655.jpg

    Was gibt es für Möglichkeiten ausser den Ordener durch einen htaccess-Schutz zu schützen?

    Eine gute möglichkeit ist sicher die bilder den namen einenr MD5 summe zu geben... aber ich vergebe die Bilder-id's per automatisch per Datenbank damit.

  • #2
    dann nimm die ID und ein Wort und erzeuge damit den bildnamen. beispiel:

    md5(bildid."testwort");

    das ergebnis wird niemand herausfinden, wenn du das benutzte wort geheim hälst.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Ahhh ok gute Idee!!

      Aber 32 Zeichen ist nen bischen doll lang... wie wär die kürzere variante?

      Kommentar


      • #4
        substr()

        Kommentar


        • #5
          hmm naja "abschneiden" is das so eine gute idee? Aber 32 Zeichen als dateiname ist doch einbischen lang oder würde es gehen?

          Kommentar


          • #6
            hmm naja "abschneiden" is das so eine gute idee?
            wo ist das problem?
            Aber 32 Zeichen als dateiname ist doch einbischen lang oder würde es gehen?
            zu lang wofür?

            Kommentar


            • #7
              naja zwecks abschneiden... ich weiß nicht ob das so gut ist, ich muss sie ja eindeutig wiedererkennen können.

              also wenn ich jetzt zum beispeil so mache ist es in ordnung, richtig?

              PHP-Code:
              $bild_id md5($db_bild_id."name"); // $db_bild_id ist zum beispeil 477 aus der Datenbank

              // Datei jetzt so auf mein FTP speichern
              $dateiname substr($bild_id08).'.jpg';

              // und so z.b. aufrufen
              echo 'www.xxx.xx/bildesets/Nordin/45/'.$dateiname
              zu lang wofür?
              Als Dateiname, hab ich doch geschrieben... aber wie ich grad beschrieben hab ist es doch besser, oder ist das risiko da doch zu hoch das die 8 zeichen nocheinmal kommen könnten?
              Zuletzt geändert von Nordin; 08.02.2007, 00:30.

              Kommentar


              • #8
                ich muss sie ja eindeutig wiedererkennen können
                wiedererkennen? was heißt denn das?

                natürlich läufst du gefahr, einen namen doppelt zu vergeben, schließlich stehen dir "nur" 16^8 (etwas über 4 mrd.) namen zur verfügung. daher sollte man vielleicht vor dem speichern prüfen, ob dieser name nicht bereits vergeben wurde.
                Als Dateiname, hab ich doch geschrieben...
                was soll "zu lang für einen dateinamen" bedeuten? zu lang, um den namen am telefon zu diktieren? zu lang für das betriebsystem?

                Kommentar


                • #9
                  was soll "zu lang für einen dateinamen" bedeuten? zu lang, um den namen am telefon zu diktieren? zu lang für das betriebsystem?
                  Na zu lang um ihn einer datei zu geben und diese dann zu speichern... also für ein betriebssystem, genau

                  aber wenn 32 Zeichen nicht zu lang für ein BS sind, könnte man den dateinamen ja auf 32 Zeichen lassen weil dann wird es diesen niemals doppelt geben da er ja aus einer id aus der Datenbank kommt die per "int primary key auto_increment" erstellt wird...

                  um es nochmal ein bischen dursichtiger für dich zu machen:

                  der user läd bilder hoch jedes bild bekommt momentan eine id (int primary key auto_increment) und wird unter dieser id auf dem ftp und in der DB gespeichert.

                  jetzt will ich aber das die id zwar in der DB steht aber ich sie, wie Shurakai beschrieben hat, auf dem ftp speichern - nicht unter der id wie in der DB sondern mit einer md5 - somit hat ein user sogut wie keine chance in bild von ausserhalb per zufall aufzurufen (wie ganz am anfang von mir erklärt)

                  Kommentar


                  • #10
                    Na zu lang um ihn einer datei zu geben und diese dann zu speichern... also für ein betriebssystem, genau
                    kommt auf das betriebsystem an. es sind aber i.d.r. 255 zeichen möglich.
                    ... weil dann wird es diesen niemals doppelt geben
                    naja, nicht "niemals", sondern unwahrscheinlicher. eine kollision ist immer noch möglich, also solltest du trotzdem prüfen, ob die datei nicht bereits existiert.

                    Kommentar


                    • #11
                      hmm ok verstehe... also nehm ich die gesammte länge und überprüfe noch zusätlich
                      ich dank dir....

                      Kommentar


                      • #12
                        Du kannst den md5-hash auch per funktion auf 16 zeichen verkürzen, so ist die wahrscheinlichkeit für kollisionen noch geringer:

                        string md5 ( string str [, bool raw_output] )

                        link

                        Kommentar


                        • #13
                          Original geschrieben von PHP-Desaster
                          Du kannst den md5-hash auch per funktion auf 16 zeichen verkürzen, so ist die wahrscheinlichkeit für kollisionen noch geringer:

                          string md5 ( string str [, bool raw_output] )
                          Das ist Quark.
                          Du bekommst exakt den gleichen MD5-Wert, nur anders dargestellt.
                          Die Wahrscheinlichkeit von Kollisionen änderst sich damit exakt genau null.

                          (Ausserdem eignet sich die Ausgabe, die du damit erhältst, wohl nur in sehr eingeschränktem Maße als Dateiname.)
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            ok also lass ich die 32 Zeichen *g* ?

                            Kommentar


                            • #15
                              Ja.
                              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                              var_dump(), print_r(), debug_backtrace und echo.
                              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                              Kommentar

                              Lädt...
                              X