OIS Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) Det er umulig å forhindre sql-injection i URLen. Dette skal forhindres i sql spørringen, der du escaper/filtrerer alle parametre skikkelig. Man kan kjøre en spørring, rett fra URL'en ? Nei du vil nok ha problemer med å sende en URL til SQL databasen. Som jeg sa, det er når du bygger spørringen du må sørge for å unngå sql-injections fra parametre. Om disse parametrene kommer fra en web klient, database, PHP variabler/configs eller andre tredjeparter. Du bør ikke "hindre sql-injection" direkte på alle data fra $_GET/$_POST siden det ikke er sikkert alle data skal brukes i en sql spørring. Du vil gjerne manipulere disse data før de brukes i en spørring, og da må de escapes/filtreres på nytt. Endret 16. januar 2009 av OIS Lenke til kommentar
Wackamole Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 PS_CS4 får jeg spørre deg om du kjører sql setningene dine i GET parameter? mysql injection brukes vanligvis til og få tilgang til et system som dem i utgangspunktet ikke skal ha tilgang til, altså fra et innloggnings skjema f.eks. Lenke til kommentar
PS_CS4 Skrevet 16. januar 2009 Forfatter Del Skrevet 16. januar 2009 PS_CS4 får jeg spørre deg om du kjører sql setningene dine i GET parameter? mysql injection brukes vanligvis til og få tilgang til et system som dem i utgangspunktet ikke skal ha tilgang til, altså fra et innloggnings skjema f.eks. $value = mysql_real_escape_string($_GET['noe']); mysql_query("$value"); Lenke til kommentar
AlecTBM Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 Du tuller nå? Du bruker ikke noe sånt for å kjøre spørringer? vell, alt du trenger å vite er blitt skrevet. Famen sitt eksempel fungerer helt fint Lenke til kommentar
PS_CS4 Skrevet 16. januar 2009 Forfatter Del Skrevet 16. januar 2009 Du tuller nå?Du bruker ikke noe sånt for å kjøre spørringer? Prøv og tenkt, litt framover da. mysql_query("SELECT * FROM brukere WHERE nick = '$value'"); Lenke til kommentar
Martin A. Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 Du tuller nå?Du bruker ikke noe sånt for å kjøre spørringer? vell, alt du trenger å vite er blitt skrevet. Famen sitt eksempel fungerer helt fint Kan fint brukes til å kjøre spørringer, det der. Men man MÅ naturligvis kjøre inputten gjennom en rekke tester, for å sikre seg at man ikke gjøre noe som kan gjøre skade. Lenke til kommentar
AlecTBM Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) altså, du bruker $_GET til å kjøre spørringer? feks: ?sql="SELECT * FROM brukere WHERE nick = 'test'" <?php mysql_query($_GET['sql']); ?> EDIT: @m4rtin: Ja det er fulgt mulig, og hvis det blir parsa og sjekka bra nok så går det nok ganske problemfritt også, men hva er vitsen? Endret 16. januar 2009 av AlecTBM Lenke til kommentar
AlecTBM Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 Jeg håper inderlig ikke at du gjør det sånn. Men for å avslutte diskusjonen, send verdiene i GET og kjør mysql_real_escape_string() på verdiene før de går inn i spørringen. Lenke til kommentar
OIS Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 PS_CS4: Å putte sql spørringen i selve URLen betyr at hvem som helst som åpner den siden kan endre den til ka som helst. Du gir også vekk informasjon om databaseoppbyggingen din. Det er bedre å legge til parametre som definerer hvilken oppgave du vil ha utført. På PHP siden velger du sql spørringen og legger til parametre fra web klienten. Lenke til kommentar
PS_CS4 Skrevet 16. januar 2009 Forfatter Del Skrevet 16. januar 2009 Hva skal jeg svare da, Famen? Det er da helt menigsløst og kjøre en query fra URl, og det har jeg alldri sagt jeg har gjort. Lenke til kommentar
Wackamole Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) jeg spurte PS_CS4 får jeg spørre deg om du kjører sql setningene dine i GET parameter? Og jeg fikk til svar $value = mysql_real_escape_string($_GET[\'noe\']); mysql_query(\"$value\"); Og dette sier du nå Det er da helt menigsløst og kjøre en query fra URl, og det har jeg alldri sagt jeg har gjort. Så spurte AlecTBM Du tuller nå?Du bruker ikke noe sånt for å kjøre spørringer? Og DA svarte du Går det an, og bli så dum?! Du gir oss ALDRI et konkret svar på om du virkelig kjørte SQL setninger fra GET parametere, vi har alle sett hvordan du koder og for min del, kunne jeg virkelig trudd på at du kjørte SQL setninger fra GET i url. Endret 16. januar 2009 av Famen Lenke til kommentar
AlecTBM Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 Hva med å svare skikkelig? Hvis du vil ha hjelp og respekt så må du være høflig, og da er folk høflige tilbake. Jeg vet at jeg har vært hard mot deg, og jeg husker selv hvordan det var å ikke forstå noe, den følelsen har man ofte når det gjelder programmering, men man leser og søker til man forstår. Hvis du er så heldig at du får andre som er bedre til å hjelpe deg, og de sender deg linker osv. så leser du på linkene, og da mener jeg ikke skumlesing. Det hjelper også at du leser feilmeldinger og tilbakemeldinger fra script selv, du lærer ingenting hvis bare patcher det til en annen som gir deg et svar på hva du skal gjøre. Sånn for å si det, vi vil faktisk hjelpe deg, men da må du ta imot den hjelpen vi gir deg og ikke klage til du får ny. Lenke til kommentar
PS_CS4 Skrevet 16. januar 2009 Forfatter Del Skrevet 16. januar 2009 jeg spurtePS_CS4 får jeg spørre deg om du kjører sql setningene dine i GET parameter? Og jeg fikk til svar $value = mysql_real_escape_string($_GET[\'noe\']); mysql_query(\"$value\"); Og dette sier du nå Det er da helt menigsløst og kjøre en query fra URl, og det har jeg alldri sagt jeg har gjort. Så spurte AlecTBM Du tuller nå?Du bruker ikke noe sånt for å kjøre spørringer? Og DA svarte du Går det an, og bli så dum?! Du gir oss ALDRI et konkret svar på om du virkelig kjørte SQL setninger fra GET parametere, vi har alle sett hvordan du koder og for min del, kunne jeg virkelig trudd på at du kjørte SQL setninger fra GET i url. Jeg skrev rett etterpå: mysql_query("SELCT * FROM brukere WHERE nick = '$value'") Lenke til kommentar
Wackamole Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) Fremdeles, den valuen er ikke sikkerhets klarert på noen måte. Og det er det vi har gitt eksempler på hele tiden.. - og jeg har enda ikke fått forklaring på hva du skal injection sikre Endret 16. januar 2009 av Famen Lenke til kommentar
Martin A. Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) @m4rtin: Ja det er fulgt mulig, og hvis det blir parsa og sjekka bra nok så går det nok ganske problemfritt også, men hva er vitsen? lightversjon av phpMyAdmin i store applikasjoner, feks. Endret 20. februar 2009 av cyclo Lenke til kommentar
PS_CS4 Skrevet 16. januar 2009 Forfatter Del Skrevet 16. januar 2009 Fremdeles, den valuen er ikke sikkerhets klarert på noen måte. Å? Hva mer må til? Lenke til kommentar
AlecTBM Skrevet 16. januar 2009 Del Skrevet 16. januar 2009 (endret) Hvis du mener at $value i mysql_query("SELCT * FROM brukere WHERE nick = '$value'") kommer fra $value = mysql_real_escape_string($_GET['noe']); ingenting EDIT: På grunn av en forespørsel så legger jeg ved et "eksempel" som viser hva som er "nok" $value = mysql_real_escape_string($_GET['noe']); mysql_query("SELCT * FROM brukere WHERE nick = '$value'") Dette skulle være sikkert nok (hvis noen er i mot, si ifra, er litt trøtt akkurat nå) Endret 16. januar 2009 av AlecTBM Lenke til kommentar
fezken Skrevet 17. januar 2009 Del Skrevet 17. januar 2009 Å kjøre mysql_real_escape_string på verdien som skal settes skal sikkre mot sql injection, men håper da du validerer den litt mer. Som f.eks og sjekke om parameteret(i dette tilfellet) innholder noe som tilsvarer ett brukernavn. Uansett jeg linket til en quote smart funksjon i mitt forrige innlegg. Ville anbefalt deg å ta en titt på den. Lykke til Lenke til kommentar
cyclo Skrevet 20. februar 2009 Del Skrevet 20. februar 2009 Brukerne bes holde seg til sak og ikke person. Personangrep tolereres ikke, og i grove tilfeller vil den aktuelle brukeren bli fratatt tilgangen til forumet. Hva brukere mener om hverandre er ikke tema for tråden, og det er direkte ødeleggende for diskusjonen. Innlegg med personangrep er blitt fjernet eller redigert. Brukere oppfordres til å bennytte -funksjonen om man kommer over personfokuserte innlegg av negativ art, fremfor å kommentere det i tråden. På den måten kan moderator bedømme saken og vi unngår videre personkrangel. (Dette innlegget skal ikke kommenters, da det blir ansett som off-topic. Reaksjon på moderering gjøres eventuelt på PM.) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå