Avatar billede BTEngineer Novice
23. oktober 2007 - 22:26 Der er 11 kommentarer og
1 løsning

Sikkerhedshul uden addslashes

Hej eksperter.

Jeg ville hører hvordan og hvad man ville kunne gøre hvis man ikke benytter addslashes til sine posts.

Altså hvis man laver en formular og laver disse tegn i et felt:
'heheeeee '")

så får man f.eks. denne fejl:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'heheeeee'")', NOW())' at line 1

Hvad kan man få ud af dette?
Avatar billede Slater Ekspert
23. oktober 2007 - 22:30 #1
Jeg må indrømme, jeg forstår ikke helt hvad du spørger om.
Hvis det er løsningen på problemet, har du den jo selv: nemlig addslashes() eller mysql_real_escape_string().

Er det hvad hackere kan bruge hullet til du vil vide, eller...?
Avatar billede erikjacobsen Ekspert
23. oktober 2007 - 22:37 #2
Avatar billede gammelhat Nybegynder
24. oktober 2007 - 11:54 #3
Du kan jo sætte dig ned og lege. Hvad kan du finde på at skrive af ondsindede sql koammndoer, når du har mulighed for at bryde ud af 'strengen'?
Avatar billede BTEngineer Novice
24. oktober 2007 - 19:07 #4
gammelhat->
jeg har siddet og leget med det og har ikke fået andet ud af det end den fejl der.
Hvad kan man lave af ondesindede sql kommandoer?
Avatar billede nielle Nybegynder
24. oktober 2007 - 19:13 #5
Angrebstypen kaldes for "SQL injection", og enhver seriøs webprogrammør skal kende til farene ved at bare tage imod alt input helt ukritisk:

http://en.wikipedia.org/wiki/SQL_injection
Avatar billede BTEngineer Novice
24. oktober 2007 - 19:18 #6
Jeg ved det er kritisk hvis man ikke benytter det til sine inputs, benytter også addslashes, altid.

Men jeg spørger hvordan og hvad man kan få ud af det, hvis der er en tumpe der ikke har lavet det i f.eks. en gæstebog?
Avatar billede nielle Nybegynder
24. oktober 2007 - 19:26 #7
Nu er det jo altså en direkte overtrædelse af Ekspertens regeler at fortælle folk den slags. Hvis man er samvittighedsfuld fortæller man det til vedkommende, og ellers bør man fortælle det til hans udbyder.

Problemet er ikke så meget at det kan gå ud over ham og hans gæstebog - ja hele hans site - men at det kan faktisk gå ud over dem som har postet i god tro på hans gæstebog.
Avatar billede pidgeot Nybegynder
24. oktober 2007 - 19:31 #8
Det er nu mysql_real_escape_string du bør bruge - addslashes er ikke sikker nok i multi-byte tegnsæt ;)

Erik's link er et udemærket eksempel - man kan redigere alt muligt i tabeller.

Lige netop med PHP og mysql_query er det ikke HELT så stort et problem som det potentielt kunne være, fordi den (endnu) smider ekstra queries væk - dermed havde eksemplet i den xkcd ikke gået - men det er stadig rigeligt stort, da det giver mulighed for eks. at slette alt i en tabel hvor man ellers kun skulle have kunnet slettet en række - det kan endda være muligt at logge ind som en vilkårlig bruger, såsom administratoren så længe man kender brugernavnet. Desuden kan det jo tænkes det på et tidspunkt bliver ændret, og der er jo ingen grund til at friste skæbnen

Ideelt set bør man faktisk bruge bind parameters, da der er mindre risiko for fejl i den funktionalitet end i databasens escaping-funktion (det er før set at der var problemer med visse MBCS - både i MySQL og i PostgreSQL) - i PHP vil det så for MySQLs vedkommende kræve mysqli-extensionen i stedet for den normale mysql-extension.
Avatar billede BTEngineer Novice
24. oktober 2007 - 19:33 #9
Altså man kan få oplyst oplygninger fra dens database?
Avatar billede pidgeot Nybegynder
24. oktober 2007 - 19:43 #10
Det kan man meget sjældent, da du normalt ikke har adgang til den viden der er nødvendig for at tilføje oplysninger til en SELECT så der kommer flere ting ud.
Avatar billede BTEngineer Novice
24. oktober 2007 - 20:09 #11
Ville man kunne slette den tabel - Hvordan?:

$tjek_id = mysql_query("SELECT * FROM baggrunde WHERE id LIKE '$_GET[id]'");
if(mysql_num_rows($tjek_id) == "0") {
echo("Der findes ingen baggrund med dette id!");

I denne kode benyttes $_GET[] fra en url
Avatar billede BTEngineer Novice
03. april 2008 - 16:47 #12
lukket.
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