password in php file veilig ?
12 maart 2009 - 22:52   
geplaatst door: macpeterr
Hoi,

Ik ben bezig een php scriptje aan het maken welke wat opgegeven variabelen in een URL registreert in een mysql database. Nu heb je voor het maken van een database connection oa. de username en password nodig. Om nu misbruik te voorkomen wil ik zeker zijn dat ik deze gegevens juist afscherm. Ik heb het volgende gedaan.

In een separate folder, bijv. PROG, heb ik de rechten op 755 (RWXR-XR-X) gezet. In deze folder heb ik mijn PHP script geplaatst waarop ik de volgende rechten heb toegepast; 641 (RW-R----X). Dus anonumous users zijn alleen in staat om het PHP script uit te voeren. Ze zouden het PHP script niet kunnen lezen. Het script functioneert, dus ontbreken van read rechten voor anonymous users is geen probleem. Alleen benaderen van de PROG directory is ook niet toegestaan.

is dit :thumbs-up: of moet ik nog meer :reading:    

Peter
password in php file veilig ?
13 maart 2009 - 09:07    reactie #1
geplaatst door: Dampflok
Het plaatsen van wachtwoorden zonder encryptie in een PHP bestand wordt over het algemeen niet als veilig beschouwd. Je kan ook een combinatie van een .htaccess en .htpasswd bestand in de map plaatsen. Je kan die vervolgens zo vullen met wachtwoorden voor meerdere gebruikers, met toegang gebaseerd op IP adres+Gebruikersnaam+Wachtwoord. De bestanden maak je aan met een ASCII tekst editor en sla ze op je computer op als htaccess.txt en htpasswd.txt in ASCII formaat (Tekst zonder opmaak).

Het .htaccess bestand:


<Limit GET>
order deny,allow
allow from XXX.XXX.XXX.XX0
allow from XXX.XXX.XXX.XX1
allow from XXX.XXX.XXX.XX2
allow from XXX.XXX.XXX.XX3
deny from all
</Limit>

<Files .htaccess>
order allow,deny
allow from XXX.XXX.XXX.XX0
deny from all
</Files>

AuthUserFile /pad/naar/de/map/die/je/wilt/beveiligen/.htpasswd
AuthName "Beveiligde Map"
AuthType Basic
Require valid-user

Uitleg voor bestand 1 .htaccess:
Hier maak je van 'XXX.XXX.XXX.XX0' jouw IP adres van je internet verbinding in .htaccess en '/pad/naar/de/map/die/je/wilt/beveiligen/' pas je aan in hetzelfde bestand. Jouw IP adres kan je hier uitvinden. Het eerste Limit GET is om te voorkomen dat vanaf andere IP adressen dit bestand aangeroepen kan worden dan die je wilt toestaan, eventueel kan je dit verwijderen. Wanneer je ook op basis van IP adres wilt toelaten dan zet je per regel een IP adres in dit gedeelte. Het tweede deel is om te voorkomen dat het bestand via de browser ingezien kan worden, laat hier alleen je eigen IP adres toe.

Bestand 2 .htpasswd:


Pipodeclown:591Li8ejppELo
Mammaloe:47aAjapNcA46Q

Uitleg voor bestand 2 .htpasswd:
In bovenstaand bestand zijn als voorbeeld de volgende combinaties gebruikt:

Gebruikersnaam: Pipodeclown
Wachtwoord: tsjongejonge

Gebruikersnaam: Mammaloe
Wachtwoord: pipotoch


In dit bestand zet je de dus per regel gebruikersnaam en wachtwoord die je aanmaakt via een .htpasswd tool op 4webhelp.net. Per regel kan je een gebruiker toevoegen. De wachtwoorden zijn encrypted op de genoemde pagina.

Beide bestanden plaats je via FTP in ASCII mode naar de map die je wilt beveiligen. Hierna kan je de bestanden op je webserverin je FTP programma hernoemen naar .htaccess en .htpasswd zonder een bestandsextensie. Let er dus op dat er een . (punt) staan aan het begin en je de .txt extensie weghaalt. In veel gevallen "verdwijnen" de bestanden plotseling in je FTP programma omdat je de optie 'toon verborgen bestanden' (afhankelijk van programma en taalinstelling varianten mogelijk) niet aan hebt staan. Op een *NIX webserver (Linux, FreeBSD, CentOS etc.) is een bestand met een . (punt) aan het begin een zogenaamd verborgen bestand, in eerste instantie niet te zien in FTP dus zonder de genoemde optie aangezet.

Wanneer je beide bestanden hebt geplaatst kom er bij het bezoeken van de map een schermpje in je browser waarin jij en de gebruikers hun aangemaakte gebruikersnaam en wachtwoord moeten invullen.

Voordelen:
Encrypted wachtwoorden
Meerdere gebruikers mogelijk
Blokkering eventueel ook op basis van IP adres
Geen toegang tot map met bestand met wachtwoorden

password in php file veilig ?
13 maart 2009 - 10:26    reactie #2
geplaatst door: macpeterr
Dank voor de uitgebreide uitleg van .htaccess.txt en .htpasswd. Ik was hier al bekend mee en is volgens mij alleen bruikbaar als je toegang wilt verlenen aan een beperkte (cug) tot een (deel) van een website. In mijn situatie moet iedereen toegang krijgen tot de site, echter alleen de database credentials dienen afgeschermd te worden. Voorbeeld

/HTML/index.html
       /DBPHP/index.php

De folder DBPHP dient dus voor iedereen toegangkelijk te zijn, en index.php dient uitvoerbaar te zijn.
Met de eerder gemelde instellingen werkt dit ook en is de inhoud van index.php niet zomaar te lezen. Mogelijk dat een separaat config bestand in /HTML/DBPHP/CONFIG met een .htaccess.txt een oplosing is?
         

Peter
password in php file veilig ?
13 maart 2009 - 15:45    reactie #3
geplaatst door: Basta
Al jij je MySQL password in een PHP script zet dan maakt het niet uit in wat voor folder ze staan want users die kijgen alleen geparste php output te zien van het script. Daarin staan dus niet meer de waardes van de PHP variabele. De enige manier om aan je orginele php script te komen is door toegang (FTP/SSH) op je server te krijgen. Als dit gebeurt dan is een alleen-lezen beveiliging ook geen hindernis meer.
password in php file veilig ?
13 maart 2009 - 16:08    reactie #4
geplaatst door: Godfather
Je zou nog kunnen zeggen dat je die gegevens buiten de webroot opslaat waar de mysql db wel bij kan, dan komen ze er helemaal niet bij.

Stel de website root bevindt zich op: /www/public_html
Dan bewaar je de gegevens op /www/ db_details

de verbinding maak je als volgt;
<?PHP
ini_set("include_path","/pad/naar/www/db_details:/pad/naar/andere/include/ mappen");
?>

Wat Basta zegt klopt wel maar vergeet niet dat ook de server wel's geupgrade wordt. Tijdens de upgrade vergeet de administrator of jijzelf misschien de LoadModule directive in apache.conf voor een uur of misschien wel 2. Gedurende die tijd zullen alle bezoekers van je website de broncode van je pagina zien inclusief alle database informatie, wachtwoorden en andere ongein. Beter dus om die info per definitie afgeschermd te houden.

Mac Pro '08 - iPad 16GB - iPhone 6 - Next Gen MB Pro
password in php file veilig ?
13 maart 2009 - 16:28    reactie #5
geplaatst door: mvdg
Ik zou me niet te druk maken om dit probleem. Basta heeft gelijk: een web gebruiker krijgt deze info nooit te zien. Op het moment dat dat wél het geval is, heb je grotere problemen dan dat iemand je wachtwoord heeft gezien. Als een kwaadwillende in het ene bestand kan kijken, kan hij immers overal in kijken en allerlei schade aan je site / server aanrichten.
Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl