beskytte fil eller hente login oplysninger til mysql på anden vis
Hej
Jeg har et setup hvor en bestemt fil på nogle forskellige domæner køres engang i timen via cronjob - det fungerer fint (der ligger fysisk en fil på hvert domæne).
Men filen indeholder login oplysninger til databasen og brugere af de forskellige domæner har adgang til denne fil hvilket ikke er så smart, for så kan man downloade filen, åbne den og se loginoplysningerne.
Filen skal ligge på det enkelte domæne da den rydder op i nogle mapper, filer mv og benytter bl.a. mkdir() & rmdir(), samt gennemgår filer i mapperne - det kan så vidt jeg ved ikke køre remote fra f.eks. et andet domæne.
Jeg har overvejet at bruge en PHP obfuscator - men er ikke sikker på dette er en god løsning.
Brugerne har adgang? Den fik jeg ikke helt. Dvs at brugerne har fri ftp-adgang til filerne på serveren? Men så har de jo også adgang til alle mulige andre PHP-filer med login-oplysninger.
Men ok. Hvis du har mulighed for at kalde filen udefra, på en måde, så lad login-oplysninger komme udefra, mens koden som sådan ligger i PHP-filen.
Ja brugeren har ftp adgang det er deres egne filer der ligger/lægges op - det er billedfiler der gemmes 3 dage hvor efter de slettes via cronjob og der indsættes noget statistik data i databasen.
Jeg kan godt kalde filen ude fra - men har brug for at oplysninger om oprydningen gemmes i databasen specifikt på den enkelte bruger.
Men ved at kalde udefra kan du stadig skrive i databasen. Brugernavn og password kommer med i kaldet, og findes ikke i PHP-filen. Der kan så være noget med timeout - typisk sat til 20-30 sekunder.
Men så var det vel bedre at ftp-brugerne fik adgang til et andet område, end hvor PHP-filen ligger. Det kan man normalt sætte op - men afhængigt af hvor det er hosted. Evt kan PHP-filen ligge som et subdomæne, hvor ftp-brugerne til det normale domæne ikke har adgang.
Brugeren kan kun ødelægge noget for sig selv, så andre brugere er ikke påvirket. Hver bruger har sit eget subdomæne.
Erik du har ret i at det er timeout der er problemet. Det er derfor jeg kun har kunnet få det til at fungere ved at filen ligger på brugerens subdomæne. Folen rydder op i (til tider) flere tusinde billeder fordelt i mange mapper.
Modfi100: jeg vil kigge på det her en af dagene, men tror måske det vil time out?
Jeg overvejer at lade oprydningen ligge i en fil og så kalde en fil på et andet domæne når oprydning er slut Men hvordan kalder jeg nemmest en fil på et andet domæne i en fil der afvikles af et cronjob? Via header("location: http://fil.php") ? Eller er der en smartere måde?
Jeg har rodet lidt med løsningen. Jeg har flyttet mine sql opslag over på et andet domæne og vil herfra kalde filen på det enkelte subdomæne når oplysningerne er hentet i databasen - men jeg har stadigvæk lidt udfordringer.
jeg har brug for at få udført følgende. TOPDOMÆNE: - der hentes oplysninger i databasen
de oplysninger der hentes er bla hvor mange mapper brugeren har på subdomænet & hvor mange dagen brugeres filer skal gemmes. Det kan varierer hvor mange mapper brugeren har.
SUBDOMÆNE Herefter skal filen på sub domænet kaldes: Her gennemgås hver enkelt mappe og sletter filer der er for gamle, samt flytter de eksisterende filer i en arkiv mappe+der oprettes datomarkerede mapper.
Herefter skal databasen igen opdateres med "oprydningstidspunktet".
mit problem består lid i hvordan jeg smartest kalder filen på subdomænet - jeg har brugt header("location. ....") men så er jeg nødt til at sende et array med som GET variabel.
jeg ville helt klart foretrække at når filen køres på topdomænet looper den igennem aller brugere og mapper og for hver mappe pr. bruger skulle oprydningsfilen så køres på subdomænet - men hvordan søren kan jeg gøre dette?
Hmm, ja. Gigahost.dk giver dig mulighed for separate ftp-konti for hvert domæne og subdomæne. Men du har fortsat et primært login til ftp i hvert fald, hvor du kan tilgå alle filer, i alle domæner og subdomæner. Hvis dit cronjob kører fra primært login, vil man så ikke kunne komme til alle filer?
Hver bruger har sit eget FTP login - det er ok - de har kun adgang til subdomænet hvor deres egne filer ligger + denne ene oprydningsfil og det er lige netop denne oprydningsfil der giver problemerne.
Den skal være der + jeg skal bruge oplysninger fra DB + jeg skal opdatere DB igen - MEN jeg kan ikke have mysql bruger & pass i denne fil
Jeg siger, at du skal forsøge dig med ikke at lægge din "oprydningsfil" sammen med filerne i mappen til subdomænet. Du skal prøve at til filerne i mappen udefra, om jeg så må sige, med stierne til mappen. Dit primære login har i hvert fald adgang via ftp, så du skal prøve at se om der ikke også er adgang vi et cronjob.
Ok. Jeg må prøve mig frem, men jeg tror ikke mkdir kan virke fra et domæne til et andet? Og jeg kom lige til at tænke på at hvis unlink virker på tværs af domæner, kunne jeg så ikke slette filer på en anden server?
Men jeg vil prøve mig lidt frem. Tak for input :-)
Det virker som det skal, så vidt jeg kan se med et lille eksperiment.
Med dit primære login kan du gøre alt med dine filer i de kataloger, der hører til dine domæner - ganske som du kan med login via FTP.
Men prøv - jeg ved jo ikke lige præcis hvad du laver ;) Alternativt er selvfølgelig at bruge noget andet end gigahost. Med din egen virtuelle server, så kan du selvfølgelig alt - og prisen kan være ca den samme.
Warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(../sub.domæne.dk/archive/NY_MAPPE) is not within the allowed path(s): (/home/www/domæne.dk/:/tmp/domains/2ff/domæne.dk/:/usr/share/php_binaries/include/) in /home/www/domæne.dk/FIL.domæne.php on line 55
hmm ja safe mode er slået til og jeg kan se at i fremtidige php versioner er der ikke mulighed for at slå det fra! jeg kan godt nu - men kommer der 3 nye php udgivelser forsvinder muligheden i kontrolpanelet :-) så løsningen må gerne være lidt "langtidsholdbar".
Jeg tror jeg prøver at rode lidt med ftp løsningen - med mindre du har andre forslag eller forbehold for FTP løsningen.
Slå det kun fra på (sub)domænet hvor PHP filen ligger - der er trods alt en lille smule sikkerhed i det. Jeg kigger efter om lidt efter andre indstillinger.
Jeg har flyttet filen over på top domænet herfra skal den så slette osv på subdomænet, det er subdomænet brugeren har adgang til og derfor ikke så godt at loginoplysn ligger her.
Jeg kan ikke kommer uden om openbase dir tingen - men jeg har lavet en løsning der kombinerer 2 filer.
Den første benytter FTP til at omdøbe nogen mapper og redirecter så til sidst til en fil på brugeres server der blot sletter en mappe og oprette den tom igen - så tusind tak for hjælpen begge to det fik mig i hvertf fald i den rigtige retning.
Erik jeg er blevet lidt nysgerrig - du skriver Med din egen virtuelle server, så kan du selvfølgelig alt - og prisen kan være ca den samme.
Hvad mener du med det - kan jeg købe det ude i byen - eller mener du at jeg selv fysisk skal hoste en server? det kunne nemlig måske godt være interessant hvis man kan købe det ude i byen :-)
Øv. Openbasedir er ikke et problem for mig. På gigahost.
Du skal ud i byen - det kan ikke svare sig at stående selv. Jeg har selv erfaring med digitalocean.com - kan man klare sig med en lille, så koster det $5 om måneden. Amsterdam er hurtigst i forhold til Danmark.
Det er så jo ret beset også nødvendigt at kende lidt til opsætning af server osv.
hmm underligt med openbase dir - jeg må gøre et eller andet galt?
Hvilken kode snip har du testet med? og hvad sker der hvis du f.eks. skifte php version til version 5.6 (den nyeste). det irriterer mig lidt jeg ikke kan når du kan :-)
Jeg kigger lidt på digitalocean.com - men ja som du skriver det lidt server kendskab og der kommer jeg desværre lidt til kort :-)
Jeg ved stadig ikke, om du får byttet lidt rundt på tingene. Der hvor dit fantastiske rydde-op PHP-script ligger, skal du slå safe-mode fra. Ikke der, hvor du vil ind og pille.
Versionen, som jeg bruger er PHP 5.2 - det vil være lidt besværligt at prøve noget andet. Lige nu.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.