FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Vad skulle ni säga bästa sättet att säkra koppling mellan PHP och en MySQL databas är?
1) Jag tänker dels på själva databasen/MySQL, typ sätta lösenord på root etc. Jag har följt dessa steg http://www.analysisandsolutions.com/code/m...sic.htm#tighten men finns det något ytterligare man bör tänka på? 2) Specifikt hur gömmer man kopplingen till databasen i PHP. Ett sätt är ju att lägga lösenord, databasnamn etc. i en include-fil, men hur skyddar man den effektivt. Jag tycker också att det känns lite olustigt att lägga ett lösenord i klartext, kan man kryptera det på något sätt (mao accepterar MySQL ngn form av krypterat lösenord). Tacksam för alla kunskaper kring detta jag kan få ta del av. Mvh Max Ps: Jag använder en Win2k server. |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Hejsan.
Se ALLTID, ALLTID till att kolla datan som kommer från klienterna, dvs via htmlforumlär. Om dom ska ange ett postnummer så sak det inte finnas annat än siffror från det fältet, samma med förnamn, ska inte komma med skräptecken där såsom ',%@#"¤$€"!# osv, endast a-zA-Z, ej heller siffror. Lagra uppkopplingssträngen samt databasnamn,login,lösenord i en includefil precis som du säger, som ligger utanför din hemsidas katalog. Dvs om din hemsida ligger i /www/minsida så lägger du med fördel den filen i /www Se till att ange full sökvägar till allt som körs i include() / include_once() Läs mera om mysql_escape_string |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Flitig postare
|
nomicon: Jag vet inte om jag missuppfattar dig nu, men Max bör lägga anvnamn och lösenordsfilen till databasen UTANFÖR www-roten. Jag uppfattade ditt inlägg som om han skulle lägga den i www-roten. Detta för att då ingen kan skriva en sökväg för att komma till denna fil. Men om du menade så kan du bortse från det jag skrev...
Annars är det som nomicon säger, kontrollera allt du ska lägga in/söka efter i databasen om användaren får fylla i textfält vid t.ex. registrering/sökning. |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Tja.
Självklart menar jag att det skall ligga på en del av filsystemet som INTE kan läsas av den användare / grupp som kör Webbservern. Martin ![]() |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
Tack för svaren. Då verkar jag ha gjort rätt hittills utom i ett avseende: den strikta kontrollen av inmatat data. Varför är det nödvändigt? Är det för att någon annars skulle kunna lägga in data som modifierar SQL-uttrycket jag skickar till servern?
|
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Har WN som tidsfördriv
|
extra säkerhet kan man också lägga genom att kontrollera varifrån datan skickas..
Jag har haft mycket kul på en del websidor genom att tillverka egna formulär och skicka data till deras php/asp script... |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Flitig postare
|
Det finns något som heter SQL-injection, viket innebär att en ond användare t.ex. fyller i en inloggning enligt följande:
Om din sqlfråga ser ut såhär: $sql = mysql_query("SELECT * FROM user WHERE user = '$_POST[Anv]' AND pass = '$_POST[Pass]'"); Då kan en ond användare skriva: Anv: ' OR id=1 Pass: ' OR 1=1 Detta ger: $sql = mysql_query("SELECT * FROM user WHERE user = '' OR id=1 AND pass = '' OR 1=1"); Då blir denna person inloggad som personen med id 1, vilket ofta är en administrator. Detta är och ett relativt snällt exempel, man kan exekvera andra kommandon. Det finns en del säkerhetsåtgärder inbyggda i en del SQL-servrar, men man bör aldrig tillåta användare att skicka in ' i databasen, om det är en text som ska läggas in och man vill tillåta ' kan man alltid använda addslashes(). Mvh |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
Svara |
|
|