Avatar billede mr-buchwald Nybegynder
05. januar 2009 - 17:56 Der er 23 kommentarer og
1 løsning

Hvor sikker er en MySQL-database?

Hej!

Jeg går og funderer over om det er forsvarligt at opbevare personlige oplysninger, såsom fulde navn, adresse, e-mail, fødselsdato m.v. i en MySQL-database?

På forhånd tak!
/Mr. Buchwald
Avatar billede keysersoze Guru
05. januar 2009 - 18:35 #1
Selvfølgelig er det forsvarligt - lige så forsvarligt som fx MSSQL. Der hvor usikkerheden opstår er andre steder, fx hvis der ikke er lukket af for sql injection eller indgangen til databasen ikke er sikret.
Avatar billede erikjacobsen Ekspert
05. januar 2009 - 18:41 #2
Fx kan man næppe sige at en database på et webhotel er sikkert.
Avatar billede mr-buchwald Nybegynder
05. januar 2009 - 20:45 #3
Så hvis man har MySQL-databasen liggende hos sin webhoteludbyder, som eksempelvis http://domaindirect.dk/ er det ikke sikkert nok?

>>"fx hvis der ikke er lukket af for sql injection eller indgangen til databasen ikke er sikret."<<
Hvornår er der lukket for sql injection?
Jeg indsætter og henter visse data via php-kode...
Og hvad menes med indgangen til databasen er sikret? - Hvordan kan dette i så fald gøres? Databasen er sikret med adgangskode.
Avatar billede erikjacobsen Ekspert
05. januar 2009 - 21:34 #4
Du kan ikke som udgangspunkt regne med at databasen er sikret mod andre kunder på webhotellet. Ofte er det megasimpelt at aflæse andres mysql-password. Så med mindre webhotellet vil garantere en vis form for sikkerhed, så skal man ikke regne med det.
Avatar billede htx98i17 Professor
05. januar 2009 - 22:06 #5
Erik kan du give et eksempel på hvad du mener er megasimpelt? hvis du mener at det oftest er folks fødselsdato, telefonnummer, 123456, etc. så forstår jeg hvad du mener.
Avatar billede erikjacobsen Ekspert
05. januar 2009 - 22:18 #6
Nej, det vil jeg ikke.
Avatar billede keysersoze Guru
05. januar 2009 - 22:47 #7
her lidt om sql injection http://web-dev.dk/post/2008/07/SQL-injections---mere-end-bare-et-pling.aspx - der er ikke noget specifikt om php men det er der masser af på nettet.
Avatar billede mr-buchwald Nybegynder
06. januar 2009 - 21:36 #8
Kan jeg så forhindre SQL-injection ved at bruge get_magic_quotes_gpc() , addslashes() eller evt. også stripslashes() ?

Hvad kan jeg generelt set gøre for at beskytte mig bedst?

Tusind tak for jeres hjælp ind til nu :)
Det er bare SUPER!
Avatar billede erikjacobsen Ekspert
06. januar 2009 - 22:01 #9
Det bedste du kan gøre at at anvende parameters med http://php.net/mysqli
Avatar billede mr-buchwald Nybegynder
06. januar 2009 - 22:04 #10
Uha. Hvilke? - i hvilken sammenhæng? .. er lidt blank i brug af parametre :S
Avatar billede erikjacobsen Ekspert
06. januar 2009 - 22:12 #11
Avatar billede arne_v Ekspert
11. januar 2009 - 00:58 #12
Sikkerheden skal matche følsomheden af data.

nick, rigtigt navn, email adresse, password, CPR nummer og credit card nummer kræver forskellige
niveauer af sikkerhed.

Man skal vurdere hvad man vil beskytte sig mod: sine egne brugere, amatør hackere,
professionelle kriminelle hackere, admins på web og database server, folk i ens egen
organisation.

Og så vælger man et passende sikkerhedsniveau.

Umiddelbart synes jeg ikke at de data du nævner er så følsomme, at det automatisk
skal udelukke brug af web hotel.

På den anden side vil jeg ikke bruge et web hotel der tillader brugere at hapse
andre brugers MySQL password til at opbevare noget som helst på.
Avatar billede mr-buchwald Nybegynder
11. januar 2009 - 23:08 #13
På hvilket sikkerhedsniveau ville denne funktion ligge på?

<?php
function quote_smart($value)
{
 
  if (get_magic_quotes_gpc()) {
      $value = stripslashes($value);
  }

  if (!is_numeric($value)) {
      $value = "'" . mysql_real_escape_string($value) . "'";
  }

  return $value;
}
?>
Avatar billede mr-buchwald Nybegynder
11. januar 2009 - 23:14 #14
Lige som et tillæg hertil, tillader min webhoteludbyder ikke adgang til databaseserveren fra eksterne forbindelser, men kun fra webserveren. Derudover er serveren også beskyttet med firewall.

Dette har vel også en betydning, nu når jeg har beskyttet mig mod SQL-injections på den interne forbindelse.
Avatar billede erikjacobsen Ekspert
11. januar 2009 - 23:21 #15
Det er bedre end ikke at gøre det, ja. Men hvad med beskyttelse fra andre brugere på samme webserver? Og fra webhotellets ansatte ;) ?
Avatar billede arne_v Ekspert
12. januar 2009 - 04:14 #16
mysql_real_escape_string udsender et signal om forældet PHP kode.

En fornuftig firewall er en god ting. Men der skal noget mere til for at have
et højt sikkerhedsniveau.
Avatar billede mr-buchwald Nybegynder
12. januar 2009 - 12:08 #17
Okay. Hvor vil I så have mig hen i retning af?

- giv gerne et eksempel på en bedre beskyttelse.
Avatar billede erikjacobsen Ekspert
12. januar 2009 - 12:11 #18
Din beskyttelse skal jo kun svare til vigtigheden af det, der skal beskyttes. Men næste skridt er selvfølgelig din egen server, med en ansvarlig administration af server og opsætning.
Avatar billede mr-buchwald Nybegynder
12. januar 2009 - 13:03 #19
Jeg syntes ikke, at mit projekt er i det omfang, at jeg vil gå ud og investere i egen server mv. udstyr.

Men hvis jeg skal beskytte personlige data såsom fulde navn, adresse, tlf nr., e-mail, fødselsdato og lign.

Hvor meget skal der til? Hvornår er det sikkert nok, så at jeg kan sove trygt, uden at have frygt for, at de inskrevne personer kan blive "opsøgt" i deres private "gemakker"?

Kan den ovennævnte funktion give mig søvnløse nætter?
- i så fald, hvordan kan den forbedres? - eller findes en alternativ beskyttelse? - set bort fra egen server/intranet.

- Nu nævner I at mysql_real_escape_string er forældet. Hvad er alternativet?

Tusind tak for jeres tid! :D
Avatar billede erikjacobsen Ekspert
12. januar 2009 - 13:19 #20
Alternativet er fx at bruge "parameters" i SQL-sætninger med http://php.net/mysqli

Sikkerhed er ikke bare sql-injections. Hvis du ikke "har begreb om" sikkerhed i webapplikationer, skal du ikke lægge noget på nettet.

Der er mange faktorer, og det læres ikke på 5 minutter. Jeg har ikke et direkte link til en guide. Google er din ven ;)
Avatar billede mr-buchwald Nybegynder
12. januar 2009 - 17:24 #21
Selvfølgelig er der andet end SQL-injections som kan gøre livet surt.

Mit problem er, at jeg ikke kender til, hvad der kan gøre skade, igennem hvad der kan gøres skade, og så har jeg desværre ikke viden til hvilke måder, jeg så kan beskytte mine data tilstrækkeligt.

Jeg kender ikke, alle de mange funktioner, som php, mysql mv. kan udføre og har desværre en begrænset viden. Derfor henvender jeg mig til eksperterne for at høre om de kan nævne nogle eksempler på hvilke funktioner, som er brugbare.

Jeg er frisk på at lære nyt (bla. mysqli), men jeg synes php.net's manual er meget tungtlæseligt og uoverskueligt for en "begynder".
- beklager hvis jeg opfattes som lidt negativ :S

Jeg kan feks. ikke lige gennemskue, hvad den store forskel imellem MySQL og MySQLi er...? - bare nogle andre funktioner, som er en forbedret udgave af MySQL?
Avatar billede erikjacobsen Ekspert
12. januar 2009 - 18:33 #22
"forskel imellem MySQL og MySQLi": anvendelse af parameters/prepared statements (kært barn, du ved...).

Der er vel ingen, der siger det skal være nemt. Webkodning er en kompliceret affære.
Avatar billede arne_v Ekspert
12. januar 2009 - 18:43 #23
mysqli har ogsaa et objektorienteret API ved siden af det procedurale
Avatar billede keysersoze Guru
09. april 2009 - 01:05 #24
lukketid?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester