Avatar billede tryout Nybegynder
24. september 2004 - 12:09 Der er 5 kommentarer og
2 løsninger

sikring af database

Jeg er lidt bekymret få sikkerheden med hensyn til en database indeholdende e-mails og andre oplysninger om bruger på et site.

Problemet skulle ligge i at en "ondsindet"-bruger kan skrive sql-sætninger i formulare o.lign. og dermed få adgang til databasen.

Jeg tester for ulovlige tegn med JavaScript i alle fomulare, men der er steder hvor jeg passer information til sql-queries via. url'en.

f.eks.

URL:
login.php?name=thomas

PHP:
usr = $_GET('name');

pg_guery("SELECT DISTINCT * FROM users WHERE name='usr'");

eks. slut

Her må være et sikkerhedsproblem idet man kan skrive ondsindet sql-queries i URL'en.
Avatar billede sostack Nybegynder
24. september 2004 - 12:26 #1
Hvis der skal komme noget fornuftigt svar fra databasen, kunne man evt. skrive:
thomas || id >= 0 i name feltet i formen.
det kan du checke for ved at lave:
$usr = $_GET('name');
if(strpos($usr, " ") >= 1 || strpos($usr, "||") >= 1) {
pg_guery("SELECT DISTINCT * FROM users WHERE name='usr'");
} else {
  echo "Fy!";
}

Ellers kan jeg ikke se den store fare i måden at lave forespørgsler på....

//sostack
Avatar billede puppetmaster Nybegynder
24. september 2004 - 12:28 #2
I følge dette uddrag, har du et problem:

Now, assume that we change the URL into something like this:

http://duck/index.asp?category=food' or 1=1--

Now, our variable v_cat equals to "food' or 1=1-- ", if we substitute this in the SQL query, we will have:

SELECT * FROM product WHERE PCategory='food' or 1=1--'

The query now should now select everything from the product table regardless if PCategory is equal to 'food' or not. A double dash "--" tell MS SQL server ignore the rest of the query, which will get rid of the last hanging single quote ('). Sometimes, it may be possible to replace double dash with single hash "#".
Avatar billede arne_v Ekspert
24. september 2004 - 12:29 #3
Du kan ikke baserer dig på client side check i JavaScript.

Du er nødt til at beskytte dig mod SQL injection på server side.
Avatar billede Slettet bruger
24. september 2004 - 12:58 #4
Nemlig, som arne_v siger, skal du ikke stole på dit javascript.
Dette er jo på clientens side, og kan slåes fra i browseren.

Hvis du benytter noget ud fra $_GET , skal du nok kigge lidt på addslashes funktionen :)
http://dk.php.net/addslashes

På den måde sikre du dig med SQL injections :)
Avatar billede arne_v Ekspert
24. september 2004 - 18:24 #5
Avatar billede arne_v Ekspert
17. oktober 2004 - 18:16 #6
Tid at få afsluttet spørgsmålet ?
Avatar billede arne_v Ekspert
17. oktober 2004 - 18:17 #7
og et svar fra mig også
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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