OR sætning

Tags:    databaser

Goddag allesammen.


Jeg har lavet et clansystem til en af mine venner, men det har en bug / fejl.


Vi har en der har været inde i systemet uden at være logget ind. Han siger han har brugt en mysql sætning med OR.

Jeg eller han ved ikke helt hvordan det virker, han har brugt et program til det.

Ville høre om der var nogen der kunne hjælpe mig med at finde ud af hvad det kan være og hvad der skal rettes



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
han har sikkert i login billedet skrevet noget lignende dette i password feltet:

mitpass' or 1=1 //

det vil sige at din sql statement kommer til at se således ud:

select username from users where password = 'mitpass' or 1=1 //

alt efter // er kommentarer, så resten af dit script kommer ikke med, han validerer sig selv ved at skrive at passworded skal være lige med 'mitpass' ellers skal 1 være lig med 1. Og siden 1 = 1 kommer han altid ind. For at undgå dette må man ikke kunne skrive sql syntax i feltet...

Alternativt skal du sikre det ved at lade de tind der bliver indtastet være parametre til din forespørgsel, eller lade en stored procedure hente det for dig...



(¯`·._.·[Brian Hvarregaard]·._.·´¯)
"All my base are belong to you"



ja det kaldes sql injektion, du bliver nød til at efter login at teste om brugeren eksisterer og har de rigtige rettigheder.. eller lav noget der søger din SQL streng i gennnem for injektion's før forespørgelsen køres


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk



Så vidt jeg ved skal man bare sørge for at escape de forskellige tegn der kan hoppe ud af en sql string. I php findes der mysql_escape_string() og alternativt addslashes() - måske har asp noget lignende? Ellers burde en søg/erstat funktion der erstatter \\ med \\\\ og ' med \\' være nok.
--
Thus, I conclude



Goddag allesammen.


Jeg har lavet et clansystem til en af mine venner, men det har en bug / fejl.


Vi har en der har været inde i systemet uden at være logget ind. Han siger han har brugt en mysql sætning med OR.

Jeg eller han ved ikke helt hvordan det virker, han har brugt et program til det.

Ville høre om der var nogen der kunne hjælpe mig med at finde ud af hvad det kan være og hvad der skal rettes



Ok, takker for de mange forslag... vil straks gå i gang med det :P



t