[php] mkdir onveilig

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Ik ben bezig met een script dat oa een map aan moet maken. Nu kan dit met mkdir, maar na wat overdenken en testen ben ik tot de conclusie gekomen dat een map gemaakt met mkdir (dus eigenaar apache heeft) door iedereen op de webserver kan worden bekeken en aangepast (de inhoud). Alleen als open basedir aan staat kan dat niet.

Is hier een goed alternatief voor?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Aanmaken via FTP*? Chownen? Chmoden?

* Dit kan ook via PHP natuurlijk. :P

[ Voor 49% gewijzigd door NMe op 18-01-2005 00:53 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Ja daar dacht ik al over, alleen zit ik dan met het probleem dat ik het ftp paswoord nodig heb...

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Gewoon gelijk even deze functie uitvoeren in hetzelfde php script. Dan hoef je helemaal niet te ftp'en,

http://nl2.php.net/manual/en/function.chmod.php

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Luxx
  • Registratie: Februari 2001
  • Laatst online: 20-05 12:47

Luxx

Hijs nu het zeil gezwind...

Via PHP kan je toch ook weer chmodden, zodat je de map alsnog safe maakt...

HYEHEHEHEEHHEEHee, hier had iets zinnigs kunnen staan, maar dat is niet.


Acties:
  • 0 Henk 'm!

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 22:34
Je kan met chmod de rechten niet veranderen zodat apache er in het ene deel van de site wel bij kan en in het andere niet.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Hiermee beveiligen?
http://php.net/chown
http://php.net/chmod
http://php.net/chgrp

En anders .htaccess gebruiken :)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 00:18
je kan met mkdir toch gewoon gelijk de CHMOD rechten toepassen?

PHP:
1
mkdir("/path/to/my/dir", 0777);

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Je map is zowiezo door iedereen te benaderen omdat de webserver op 1 user account draait (op linux is dat nobody). Wat je natuurlijk kan doen is gewoon die map chownen naar jou account en daarna chmodden zodat hij alleen te lezen is door de webserver, niet te beschrijven.

Goed alternatief is misschien dat je een MySQL database gebruikt, ligt eraan wat voor data je er precies in wilt zetten..

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Radiant schreef op dinsdag 18 januari 2005 @ 09:10:
Goed alternatief is misschien dat je een MySQL database gebruikt, ligt eraan wat voor data je er precies in wilt zetten..
Dat is dus weinig veiliger in dat geval, aangezien (volgens jou tenminste) iedereen de bestanden kan lezen hebben ze het mysql wachtwoord ook in een paar seconden om het zelf te kunnen bekijken.

Het is trouwens niet waar dat apache altijd onder nobody draait, met apache 2 heb je iig de mogelijkheid om per gebruiker een apart child process van apache te starten met zijn eigen gebruikersrechten.
Buiten dat heb je ook nog chroot mogelijkheden zodat geen enkele gebruiker zijn map uit kan.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Radiant schreef op dinsdag 18 januari 2005 @ 09:10:
Je map is zowiezo door iedereen te benaderen omdat de webserver op 1 user account draait (op linux is dat nobody). Wat je natuurlijk kan doen is gewoon die map chownen naar jou account en daarna chmodden zodat hij alleen te lezen is door de webserver, niet te beschrijven.

Goed alternatief is misschien dat je een MySQL database gebruikt, ligt eraan wat voor data je er precies in wilt zetten..
Je hebt wel bijna gelijk. Php draait onder apache en als php een bestand aanmaakt dan is het bestand dus van apache. Chmodden heeft dan geen zin omdat iemand anders ook via php (en dus user apache) dit zo kan benaderen. Alleen als je jezelf afsluit dus (000 bijv) werkt het, maar dan kan je er zelf ook niet meer bij.

Mysql is wel een optie voor sommige dingen, maar ik wil ook een aantal script schrijven. Je kan het wel omzeilen door alle php code uit de db te halen en dan te evallen, maar dat is hem ook niet.

Chown zou eigenlijk wezen wat ik zoek. Het nadeel is dat de eigenaar dan root zou moeten zijn...
Of heb ik het daar mis?

Hoe ik het nu zie zijn er 2 mogelijkheden:

chown als root zijnde
via ftp

Iemand nog een opmerking of tip wat beter werkt?

Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Wolfboy schreef op dinsdag 18 januari 2005 @ 12:50:
[...]
Dat is dus weinig veiliger in dat geval, aangezien (volgens jou tenminste) iedereen de bestanden kan lezen hebben ze het mysql wachtwoord ook in een paar seconden om het zelf te kunnen bekijken.

Het is trouwens niet waar dat apache altijd onder nobody draait, met apache 2 heb je iig de mogelijkheid om per gebruiker een apart child process van apache te starten met zijn eigen gebruikersrechten.
Buiten dat heb je ook nog chroot mogelijkheden zodat geen enkele gebruiker zijn map uit kan.
Het probleem is dus dat het script zal worden gebruikt op voor mij onbekende en bijna onmogelijk aanpasbare omstandigeheden. Ik heb het dus over standaard omstandigheden, en dat is bijna altijd dat er maar 1 user is waaronder php draait, en dat niet altijd de omgeving is gechroot..

Acties:
  • 0 Henk 'm!

Verwijderd

Radiant schreef op dinsdag 18 januari 2005 @ 09:10:
Je map is zowiezo door iedereen te benaderen omdat de webserver op 1 user account draait (op linux is dat nobody). Wat je natuurlijk kan doen is gewoon die map chownen naar jou account en daarna chmodden zodat hij alleen te lezen is door de webserver, niet te beschrijven.

Goed alternatief is misschien dat je een MySQL database gebruikt, ligt eraan wat voor data je er precies in wilt zetten..
Onder Linux draait een webserver toch onder www of www-data? Met debian iig wel. Dan zou dat toch geen probleem moeten zijn?

Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Je kan zelf bepalen onder welke user het draait (root zou ik niet doen), maar het is bijna altijd zo dat het voor elke site op de server dezelfde user is, dus alle mappen aangemaakt door php zijn door iedereen op de server toegankelijk.
Pagina: 1