WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Sql injection (https://www.wn.se/forum/showthread.php?t=1039763)

emil123 2009-12-28 20:10

Sql injection
 
Hej!
Jag använder mysql real escape string för att skydda min sida av sql injection. Men mysql real escape fungerar bara när man hämtar information från databasen.(t.ex. SELECT FROM USER....).
När man skriver i databasen så fungerar inte mysql real escape string. T.ex. när man registrerar sig, skriver i gästbok osv. Om jag skriver ett sql injections kommand i gästbok så sparas den i databasen. Jag menar om jag skrev ' OR ''=' så sparas den i databasen som den är. Men om mysql real escape string fungerade så skulle ju denna vara så här: \' OR \'1\'=\'1. Är mysql real escape string bara för att skydda sig när man hämtar information från databasen?
Tacksam för svar.

najk 2009-12-28 20:13

Det funkar i alla typer av frågor, oavsett om du gör en insert eller update, alltså inte bara vid en select. Du har nog något fel i din kod om du upplever problem. Du kan inte dela med dig av lite källkod så ser någon här snart felet..

andi 2009-12-28 20:16

Citat:

Ursprungligen postat av emil123 (Inlägg 20336919)
...
Jag menar om jag skrev ' OR ''=' så sparas den i databasen som den är.
...

Det är ju exakt det som man vill åstadkomma, utan mysql_real_escape hade ju den delen av strängen inte tolkats som något som skulle sparas i databasen utan som en del av själva frågan.

ChristianCarlsson 2009-12-28 21:03

Använd mysql_real_escape vid select/update/insert till databasen, och när du skriver ut information from databasen använd tex htmlspecialchars.

Eller har jag missuppfattat din fråga?

emil123 2009-12-30 02:02

Tackar alla
 
Citat:

Ursprungligen postat av najk (Inlägg 20336920)
Det funkar i alla typer av frågor, oavsett om du gör en insert eller update, alltså inte bara vid en select. Du har nog något fel i din kod om du upplever problem. Du kan inte dela med dig av lite källkod så ser någon här snart felet..

Som Andi sa så skulle denna delen inte tolkats utan mysql real escape string. Så tackar.

Citat:

Ursprungligen postat av andi (Inlägg 20336921)
Det är ju exakt det som man vill åstadkomma, utan mysql_real_escape hade ju den delen av strängen inte tolkats som något som skulle sparas i databasen utan som en del av själva frågan.

Tog bort mysql real escape string och la en sql injecton kommand(' OR ''=') och den blev en sifra i databasen. Nu förstod jag att utan mysql real escape string den delen skulle inte tolkats. Tack.



Citat:

Ursprungligen postat av ChristianCarlsson (Inlägg 20336924)
Använd mysql_real_escape vid select/update/insert till databasen, och när du skriver ut information from databasen använd tex htmlspecialchars.

Eller har jag missuppfattat din fråga?

Du har förståt rätt. Tack för tipset om htmlspecialchars. Ska prova den.

youheardit 2009-12-30 02:24

använder htmlspecialchars varje gång jag tar ut ur databasen! om du vill bli helt säker så använd den... här är hur du lir "skyddad"

PHP-kod:

 $string 'hej på dej! <a href="minhemsida.se">minhemsida</a>';
$string htmlspecialchars($stringENT_NOQUOTES'UTF-8'); 

den kommer skriva ut: hej på dej! <a href="minhemsida.se">minhemsida</a> och ignorera att skapa länken...

emil123 2009-12-30 23:23

Citat:

Ursprungligen postat av youheardit (Inlägg 20337055)
använder htmlspecialchars varje gång jag tar ut ur databasen! om du vill bli helt säker så använd den... här är hur du lir "skyddad"

PHP-kod:

 $string 'hej på dej! <a href="minhemsida.se">minhemsida</a>';
$string htmlspecialchars($stringENT_NOQUOTES'UTF-8'); 

den kommer skriva ut: hej på dej! <a href="minhemsida.se">minhemsida</a> och ignorera att skapa länken...

Tack för exempel. Vad är skilnad mellan htmlspecialchars och htmlentities ? De är ju lika.

youheardit 2009-12-30 23:33

Citat:

Ursprungligen postat av emil123 (Inlägg 20337198)
Tack för exempel. Vad är skilnad mellan htmlspecialchars och htmlentities ? De är ju lika.

Har inte kollat på det, men när jag byggde ett kommentar-system så vart jag tvungen att använda mig av just htmlspecialchars, fast innan jag hittade htmlspecialchar så testade jag alla andra möjliga, är nästan 100% på att jag testade htmlentities och alla utom just htmlspecialchars gick utan resultat. kan oxå vara ett programmeringsfel av mig so mgjort att htmlentities inte funkade...

etanders 2009-12-31 18:05

Citat:

Ursprungligen postat av emil123 (Inlägg 20337198)
Tack för exempel. Vad är skilnad mellan htmlspecialchars och htmlentities ? De är ju lika.

http://se2.php.net/manual/en/function.htmlentities.php

Där står följande: This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.

Magnus_A 2009-12-31 19:07

Htmlspecialchars översätter endast
Citat:

& " ' < >
Räcker för att göra outputen säker för publicering.
Htmlentities översätter även andra tecken vilket kan ha sin fördelar i andra sammanhang.


Alla tider är GMT +2. Klockan är nu 13:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson