petterg Skrevet 13. november 2003 Del Skrevet 13. november 2003 Det er en tråd i et annet forum som har sporet helt av, så jeg oppretter en ny tråd her, så kanskje noen eksperter kan komme opp med en løsning. ( Det er ikke nødvendig å lese den avsporede tråden. En problembeskrivelse følger, men for de som likevel vil ha link: http://forum.hardware.no/index.php?showtopic=167942&hl= ) Det dreier seg om en side hvor man trenger å ha lagret mysql passordet i php fila, på en slik måte at andre brukere på localhost ikke får tilgang til kildekoden av fila, og kan se passordet. Jeg har engang sett en genial løsning på dette, men finner ikke tilbake. Webserveren er apache på linux. Det som gjør denne saken litt spesiell er at websiden skal være tilgjengelig på web, må den være leselig for verden. Personen som lager denne websiden er en vanlig bruker, uten noen form for administrativ tilgang på systemet. Han har heller ikke mulighet til å bruke chown til å sette apache som eier av fila. Det er et ganske stort system (NTNU med 20.000 brukernavn) så det blir klønete å be system admin om tjenester hver gang man lager en ny fil. Sett f.x. at han skal lage en gjestebok, hvor folk, uten å skrive inn passord, skal kunne legge igjen sin hilsen. Da må vel mysql passord må stå i fila (eller en include fil, som også må være(?) lesbar fra web) Det er hundrevis av andre brukere i samme brukergrupper som ham, og målet er altså å hindre disse brukerene (og brukere forøvrig) i å få tilgang på kildekoden hvor mysql passordet står. Måter de kan gjøre dette akkurat nå er f.x. cat /local/www.stud/users/brukernavn/filnavn.php Alternativt kan de lage et eget php script som kjører via webserveren og som lister innholdet i /local/www.stud/users/brukernavn/filnavn.php for på den måten å accessere fila som apache bruker, og få ut innholdet i rent tekstformat. Selv om man setter mysql databasen som kun tilgjengelig fra local host, kan jo disse brukerene komme seg inn. Ekspert råd? -pg Lenke til kommentar
Ueland Skrevet 13. november 2003 Del Skrevet 13. november 2003 Hva med å bare lage flere mysql brukere Lenke til kommentar
petterg Skrevet 13. november 2003 Forfatter Del Skrevet 13. november 2003 Selvsagt har man flere brukere. Spørsmålet er fortsatt: hvordan gjøre så passordet for å koble seg til databasen ikke blir avslørt? NTNU kjører mysql 3.23. Hvis man f.x. skal lage en litt mer avansert database trenger man muligheten til å lage temporary table. Man trenger også update rettigheter, og med versjon < 4.0 kan man ikke gi så spesifike rettigheter i database. Å kunne skjule passordet i php fila (eller en include fil) er da en nødvendighet. Lenke til kommentar
simonj Skrevet 13. november 2003 Del Skrevet 13. november 2003 (endret) vet om at i perl kan komandoer skrives ufårståelig for *vanlige* mennesker f.eks (advarsel: rm -rf ,så IKKE PRØV Å KJØRE DET) perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see så tenkte om det mulig å bruke noe lignende rett i php/jsp kode; ellers finnes det noe som ligner på ceaser cypher på en måte ellers.... flere brukerer er bra ,men med hensyn på at f.eks jeg har polls på siden min ,der den vanlige bruker kan oppdatere databasen ,og dermed alle på nettverket får tilgang til å forandre de spørmåler og varianter jeg spører om.... ikke bra P.s. men hvis ceaser mulig ,kan da noen bruke det samme fil for å parse passord? (tviler på ) Endret 13. november 2003 av simonj Lenke til kommentar
Torbjørn Skrevet 13. november 2003 Del Skrevet 13. november 2003 scroll ned på denne siden her, all ASCII kunst er fullt fungerende perl script! http://search.cpan.org/~asavige/Acme-EyeDr...cme/EyeDrops.pm Lenke til kommentar
Torbjørn Skrevet 13. november 2003 Del Skrevet 13. november 2003 Jeg ser for meg følgende alternativ for flerbrukssystemer (først og fremst *nix, windows tør jeg ikke tenke på engang) Uansett: lage en begrenset bruker som kun har select og insert rettigheter. dette kan man gjøre på ntnu, og jeg har laget egne skript for å gjøre dette enkelt og greit på egne systemer (da ntnu ikke ville gi fra seg disse -> latterlig) *) kompilere kode, kjerneskript kan kjøres som binærfiler. det finnes kompilatorer for perl og php, men det som kan kompileres kan også dekompileres, men det krever litt innsats. filtrerer bort mange potensielle kikkere *) skramble kode, noe ala perl linken over eller eksemplet postet over. resultatet er omtrent det samme, skriptet gjøres ugjenkjennelig. jeg vil tro det muligens er lettere å reversere dette enn kompilert kode. *) apache "auto prepend" directives. har ikke satt meg inn i hvordan dette kan brukes med tanke på sikkerhet, men dette kan vanskelig gjøres uten i kombinasjon med neste punkt... *) suid/sudo, dette bør være mulig å gjennomføre. sikkerhet er en annen sak. det er såkalte racing issues i kjerna, idet man kan hoppe inn etter at systemet leser she-bang og koden utføres, og smette inn sin egen kode. suidperl har minimert denne riskern så godt det lar seg gjøre. *) suid/sudo. det sikkreste såvidt jeg kan se Lenke til kommentar
kilogram Skrevet 13. november 2003 Del Skrevet 13. november 2003 Det du kan gjere er å legge passordet i ein variabel i ei fil som du legg utenfor sjølve webområdet ditt. Denne fila treng ikkje vere world readable, og så kan du bare inkludere denne fila frå skriptet ditt. Du kan då bruke relative stiar til fila (t.d. "../mittpassord.php". Lenke til kommentar
Torbjørn Skrevet 13. november 2003 Del Skrevet 13. november 2003 jo, den *må* å være world readable (prøv selv) med mindre du suid'er apache/nobody eller noe annet lurt. Lenke til kommentar
simonj Skrevet 13. november 2003 Del Skrevet 13. november 2003 (endret) leopard:#om chown: leopard:~/public_html/progz/beta$ chown :apache include.txt chown: `:apache': invalid group leopard:~/public_html/progz/beta$ chown :httpd include.txt chown: changing group of `include.txt': Operation not permitted mer enn det ,jeg har funnet en ganske *morsomt* script (info fra freshmeat.net) , den fungerer ikke som den skulle ellers den klarer å lage en cache-fil med rare egenskaper: leopard:~/public_html/progz/beta/fase4_rdf/cache$ ls -l total 0 -rw-r--r-- 1 httpd httpd 0 2003-11-13 19:16 0bcdbd6f804fa44dc4eb981009f397dd wow, mens jeg har ikke lov å gjøre noe sånt. whattaf*?!? p.s. (jeg har ikke peiling i php) Endret 13. november 2003 av simonj Lenke til kommentar
simonj Skrevet 13. november 2003 Del Skrevet 13. november 2003 leopard:~/public_html/progz/beta$ chown httpd wow.txt chown: changing ownership of `wow.txt': Operation not permitted Lenke til kommentar
lansiden.no Skrevet 13. november 2003 Del Skrevet 13. november 2003 Jeg kan ikke se for meg at noe vil fungere, du kan som over filtrere bort mange intrengingsforsøk. Men har apache tilgang til fila for deg, har den også tilgang for andre brukere altså, om du includer en fil uansett om den er kopilert, cryptert, hashet, scramblet, gjemt, så kan andre brukere på localhost gjøre det samme. De kan lage et script som includer fila og conecter til localhost, og så f.eks dumpe hele databasen. Greit nok de får kanskje ikke tilgang på passordet i rentekst, men de kan som sakt gjøre alt annet... Siden det skal ligge på NTNU må det være av educational purposes, og da kan du jo bare generere et 'tilfeldig' passord og gi ****** i om dem får tak i det. Skal du ha en kommersiell side, bør du kjøre opp en egen server så du har mer kontroll. Lenke til kommentar
simonj Skrevet 13. november 2003 Del Skrevet 13. november 2003 (endret) 2lansiden.no: 'educational purposes' - akkurat! sånt som du sier blir det: hva er mening med å lære unger gå??? - kjøp dem rollestol ,så har de mer kontrol over konsekvenser av tyngdekraften!!! -selve meningen er i å lære hvordan [wildcard]. Endret 13. november 2003 av simonj Lenke til kommentar
simonj Skrevet 14. november 2003 Del Skrevet 14. november 2003 jeg ser ikke så veldig stort problem i at NTNU bruker ikke mySQL 4.* ,men Apache 1.3.28 er litt ut av (hvorfor ikke 2?) ,men ja,her er litt om authoriztion. Lenke til kommentar
simonj Skrevet 14. november 2003 Del Skrevet 14. november 2003 (endret) men det går ikke ann å bruke i sammenheng med .htaccess (jeg har ikke kommet så langt enna...) ,men hvis det bare for bruk i selve httpd conf, da blir det mye bedre å bruke SSL.... hmmm ,men hvordan virker .dat og hvordan kan man skrive jsp kode i bin(/hex)-format med mulighet til at serveren skal kunne parse det??? Endret 14. november 2003 av simonj Lenke til kommentar
GNUfan Skrevet 14. november 2003 Del Skrevet 14. november 2003 Hmmm Kan du ikke bare lagre det på serveren i PHP, så får jo ikke de som går inn på sida se noe, eller er det satt opp slik på NTNU at du ikke har mulighet til å lagre det så det bare blir read til webserver og deg, og ingen andre? EVT kan du leke deg med gpg... Lenke til kommentar
kilogram Skrevet 14. november 2003 Del Skrevet 14. november 2003 jo, den *må* å være world readable (prøv selv) med mindre du suid'er apache/nobody eller noe annet lurt. Det eg meinte med world readable, er at den ikkje ligg i ei mappe som Apache ikkje har tilgang til. Normalt vil det vere home-mappa di (det er det i så fall på NTNU). Du kan så inkludere den fila i PHP/JSP, men Apache vil aldri gje ut den fila. Sjølvsagt er det mulig å bryte seg gjennom dette og, men særlig betre beskyttelse enn dette får du nok ikkje om du ikkje kontrollerer serveren sjølv. Lenke til kommentar
Torbjørn Skrevet 14. november 2003 Del Skrevet 14. november 2003 alle filer du inkluderer, må være world readable, for å bruke filer på hjemmekatalogen, må for det første hjemmekatalogen være worldl executable og php fila må være lesbar. Å gjøre dette, hjelper deg ingenting hvis du vil stoppe brukere med local shell access (nå har du i tillegg gjort hjemmekatalogen din tilgjengelig for dem!) så lenge mysql-passord liggler i en phpfil, så vil den parses likevel, så å ha mysqldata i en php fil på web-området ditt er som regel ikke noe problem. Lenke til kommentar
_Nitro_ Skrevet 24. november 2003 Del Skrevet 24. november 2003 Jeg har d samme problemet. Alle websidene mine ligger i /www der har jeg ei fil som mysql passordene og sånt ligger. Da alle brukerne kan cat /www/****.php <-- som er filen med passordet. Så hvordan skal jeg få ordnet slik at dette ikke kan gjøres. Kjedelig da brukere kain få tilgang til sql databasen til denne siden Lenke til kommentar
_Nitro_ Skrevet 24. november 2003 Del Skrevet 24. november 2003 Jeg har d samme problemet. Alle websidene mine ligger i /www der har jeg ei fil som mysql passordene og sånt ligger. Da alle brukerne kan cat /www/****.php <-- som er filen med passordet. Så hvordan skal jeg få ordnet slik at dette ikke kan gjøres. Kjedelig da brukere kain få tilgang til sql databasen til denne siden Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå