www&php - chgrp och chmod på inkluderade inställningsfiler

Tråden skapades och har fått 9 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2004-04-04 18:28

Hej!

Slog mig att jag inte har full koll på säkerheten.

Hur skall man ställa in säkerheten på filerna som index.php ska få komma åt men som absolut inte ska gå att nå genom att surfa in på filen direkt.

Kan man sätta no-access i findern (cmd-i) på en fil på något vis så att den inte går att ladda hem utifall någon vet exakta sökvägen till filen?

Har ni tips på andra säkerhetsåtgärder man bör tänka på?
Det enda jag kan komma på i övrigt är att man addslashar sina dynamiska sql-queries samt att vid inkludering av filer till index.php så kontrolleras att filen som inkluderas finns i en array över sidor som får inkluderas.

  • Medlem
  • Karlstad
  • 2004-04-04 19:03
Ursprungligen av ivar:

Hej!

Slog mig att jag inte har full koll på säkerheten.

Hur skall man ställa in säkerheten på filerna som index.php ska få komma åt men som absolut inte ska gå att nå genom att surfa in på filen direkt.

Apache?
I så fall kan du stänga foldrar med en .htaccess-fil.
Här finns en massa tutorials och annat som kan vara nyttigt.

  • Medlem
  • Stockholm
  • 2004-04-04 19:57
Ursprungligen av Danne V:

Apache?
I så fall kan du stänga foldrar med en .htaccess-fil.
Här finns en massa tutorials och annat som kan vara nyttigt.

jag vill egentligen inte stänga en folder... utan jag vill göra så att filerna blir osynliga för besökaren.

Så som Johan föreslåg så får jag troligen lägga filerna utanför www-roten (för då kan man väl aldrig komma åt dem via webbläsaren?

så får index.php köra require("../hemligfil.php"); istället för require("hemligt/hemligfil.php");

EDIT:

alltså usch.. det sabbar ju hela katalogstrukturen om man ska ha en tillhörandes katalog som ska ligga utanför www-mappen. Blir ju jättekladdigt om man har som mig... typ
~/Sites/en domän
~/Sites/en annan domän

Då skulle ju deras hemliga filer ligga i samma map... blä och usch

apache körs ju ofta under en särskild användare/grupp, filerna måste då vara i samma grupp för att apache (och därmed php) ska kunna läsa/köra dom.

Vad är det för typ av filer som du inte vill att man ska kunna titta på "direkt"? om det handlar om inställnings filer etc, så vore det ju dumt att ha dom i klartext, utan antingen lägger du dom utan för din public_html/Sites katalog, eller "skyddar" en särskilt katalog med htpasswd.
Alternativt borde du ju kunna köra till med en mod_rewrite av typ följande:
RewriteCond ${HTTP_REFERER} !^http://(www\.)?mindomän\.com.*$
RewriteRule .*$ ^verboten.html
Skriver från minnet så ovanstående lär säkert inte funka, men principen är att om en referen är ifrån den egna domänen (dvs om den inte har kallats av någon annan fil) så hamnar man på verboten.html, ung. samma princip som vid "hotlink prevention", dvs om man vill förbjuda andra att direkt länka till tex. bilder etc.

Men igen, vad innehåller filerna du vill "skydda" ifrån att bli läst av annat än dina egna filer?

  • Medlem
  • Stockholm
  • 2004-04-04 19:52
Ursprungligen av johan dansk:

apache körs ju ofta under en särskild användare/grupp, filerna måste då vara i samma grupp för att apache (och därmed php) ska kunna läsa/köra dom.

Vad är det för typ av filer som du inte vill att man ska kunna titta på "direkt"? om det handlar om inställnings filer etc, så vore det ju dumt att ha dom i klartext, utan antingen lägger du dom utan för din public_html/Sites katalog, eller "skyddar" en särskilt katalog med htpasswd.
Alternativt borde du ju kunna köra till med en mod_rewrite av typ följande:
RewriteCond ${HTTP_REFERER} !^http://(www\.)?mindomän\.com.*$
RewriteRule .*$ ^verboten.html
Skriver från minnet så ovanstående lär säkert inte funka, men principen är att om en referen är ifrån den egna domänen (dvs om den inte har kallats av någon annan fil) så hamnar man på verboten.html, ung. samma princip som vid "hotlink prevention", dvs om man vill förbjuda andra att direkt länka till tex. bilder etc.

Men igen, vad innehåller filerna du vill "skydda" ifrån att bli läst av annat än dina egna filer?

Hej igen.
Jag brukar ha en mapp som "hemliga" filer ligger i... filerna innehåller lösenord till sql-databasen och funktioner för att komma åt databasen m.m.
För att komma åt dessa filer brukar jag köra require() ... kan man requira in dokument som ligger i en .htaccess-skyddad fil?

  • Medlem
  • Stockholm
  • 2004-04-04 23:42
Ursprungligen av ivar:

Hej igen.
Jag brukar ha en mapp som "hemliga" filer ligger i... filerna innehåller lösenord till sql-databasen och funktioner för att komma åt databasen m.m.
För att komma åt dessa filer brukar jag köra require() ... kan man requira in dokument som ligger i en .htaccess-skyddad fil?

Svar: ja.

men. du tänker för mycket tror jag

låt oss säga du har en vanlig standard version av typ config.php, som kan tänkas innehålla följande (typ):

<?php
$conf = array(
'dbhost' => 'localhost',
'dbuser' => 'foo',
'dbpwd' => 'bar',
'dbname' => 'baz,'
(osv osv)
);
?>

..eller hur du nu brukar skriva din config filer. Skulle jag då peka min browser på den, då händer det nästintill ingenting, jag exekverar ingenting på servern (förutom delegere lite minne till en array, som garbage hanteraren i php kommer ta hand om så småningom) och ingenting blir returnerad till min webbläsare..

whats the fuss about??

  • Medlem
  • Stockholm
  • 2004-04-04 21:22

men hmm.. ett sånt där program där man suger hem hela webbplatser.. skulle dem få php-dokumentet parsade eller råkodade??

php är ju ett serverside scriptspråk, dvs att allting som är php går igenom parser modulen (i apache) och returnerar endast vad du säger den ska returnerar till mottagaren, som oftast är en webbläsare..

så nej, dom skulle självklart få dom parsade..

  • Medlem
  • Stockholm
  • 2004-04-05 10:10

Ok, härligt!

Då har jag blivit lite på det klara angående säkerheten.

1
Bevaka tråden