abonnement Unibet Coolblue Bitvavo
pi_46383886
quote:
Op vrijdag 16 februari 2007 18:52 schreef Swetsenegger het volgende:

Je gaat er maar vanuit dat je daadwerkelijk de userinput controleert. Zowel mysql als php zijn zo inconsistent als de tyfus met strings en integers, dus is 1 fuck-up voldoende om sql injection toe te staan.
Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.

GUI
Check and sanatize data
Do stuff with data and many more.

Je hoeft in dat geval niet op meerdere plekken je data te valideren, dat is immers al gedaan. Je onderliggende klasses/functies hoeven dan alleen te checken of de input parameters goed zijn. Dwz, ik verwacht een string, en als ik dit niet krijg, error.
quote:
Ik begrijp jouw weerstand niet tegen een extra safety maatregel als mysql_real_escape_string. Zeker niet in toepassingen zoals de meeste hier maken waar performance geen groot issue is. Want eigenlijk is dat de enige reden die ik kan bedenken voor je aversie tegen een failback systeem
Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 22:41:40 #202
1972 Swetsenegger
Egocentrische Narcist
pi_46383976
quote:
Op vrijdag 16 februari 2007 22:38 schreef slakkie het volgende:

[..]

Ik neem niet aan dat de data al gevalideerd is. En in mijn check weet ik dat de data een integer is (in de regexp accepteerd ie ook doubles en floaters). Maar ik weet dat de data correct is en daarna alles met mijn data doen. Het is gechecked, alles wat ik daarna doe is op mijn conto en heeft dan niks meer te maken met users die SQL injection willen doen.
Totdat er een keer niet gechecked is
quote:
Nee, ik begrijp je redenatie achter de safety maatregel. Ik snap alleen niet waarom je dit met een integer doet. Het is namelijk geen string. Dat is mijn enige commentaar.
Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
pi_46384606
quote:
Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:
Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

$a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 23:04:34 #204
1972 Swetsenegger
Egocentrische Narcist
pi_46384803
quote:
Op vrijdag 16 februari 2007 22:58 schreef slakkie het volgende:

[..]

Ja, als het niet gechecked wordt is er toch ergens een grove fout gemaakt - die er uitgehaald had moeten worden in de unit test of end-to-end test.

$a = "1"; $a = intval($a); zou dit volgens mij moeten oplossen, daar heb je geen extra functie voor nodig.
jij hebt een andere mening hierover dan ik. Laten we het daarbij houden. Heb zo'n idee dat we niet dichter bijelkaar gaan komen.
We zitten al op 1 lijn. Je moet user input controleren. Maar het wordt wel eens vergeten he, zeker in work in progress. Dus wat is er erg om in elke query een mysql_real_escape_string op te nemen om slips op te vangen? Dat is alles wat ik zeg.

Je blijft contine maar zeggen dat het niet nodig is als je userinput controleert. Maar dat riep ik al in mijn eerste post waar ik mysql_real_escape_string voorstelde, dus is de hele discussie blijkbaar nutteloos.
pi_46384895
quote:
Op vrijdag 16 februari 2007 22:41 schreef Swetsenegger het volgende:

Tja, volgens php is $a="1" ook een integer, of probeert het in ieder geval als integer te parsen.
Ja, php is loosely typed. Dus na $a = "1"; $b = 2 + $a; is $b == 3. En na $a = "1"; $b = 2 . $a; is $b == "21";
pi_46385141
Voor het bovenstaande verhaal is een vrij simpele oplossing;
+ Zorg ervoor dat dat je variabelen van het juiste type zijn, eventueel door ze te casten.
+ Prepared statements.
+ Gooi je database vol met constraints.
+ Vang verkeerde user input op met een nette waarschuwing.

Knappe jongen als je het dan nog weet te verklooien
pi_46385431
quote:
Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:
Hier zijn we het allemaal mee eens denk ik
  vrijdag 16 februari 2007 @ 23:28:35 #208
12221 Tijn
Powered by MS Paint
pi_46385474
quote:
Op vrijdag 16 februari 2007 23:15 schreef JeRa het volgende:

+ Vang verkeerde user input op met een nette waarschuwing.
Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 23:30:15 #209
1972 Swetsenegger
Egocentrische Narcist
pi_46385519
quote:
Op vrijdag 16 februari 2007 23:28 schreef Tijn het volgende:

[..]

Ik ben persoonlijk meer fan van een doodsbedreiging en een flinke scheldpartij
"Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
pi_46386943
Zo had ik vroegâh een IP ban functie gemaakt op m'n site. Zodra je IP gebanned was kreeg je bij een poging m'n site te bekijken een paar popups die zichzelf weer gingen openen, en kreeg je de "You are an idiot" en "Hey everybody, I'm looking at gay porno!" Flash klassiekertjes voor je kiezen.
pi_46391375
quote:
Op vrijdag 16 februari 2007 23:30 schreef Swetsenegger het volgende:

[..]

"Denk je GODVERDOMME dat ik een mongool ben ofzo met je kut injection!!!!"
en dan is het gewoon een tiepfoutje zal die gebruiker raar op kijken
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 17 februari 2007 @ 18:30:50 #212
71919 wonderer
Hung like a My Little Pony
pi_46404447
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46404844
quote:
Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
pi_46404914
quote:
Op zaterdag 17 februari 2007 18:30 schreef wonderer het volgende:
Is er een makkelijker manier om te controleren of een bepaald record al bestaat dan met een SELECT en daarna een if(mysql_num_rows($result)!=0)(UPDATE) else (INSERT)?
Na een Update of een Insert kun je met mysql_affected_rows() opvragen hoeveel rijen er zijn aangepast. Als dat 0 is dan kun je met de andere functie in de herkansing
pi_46404944
quote:
Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

[..]

INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.

[ Bericht 5% gewijzigd door Light op 17-02-2007 18:53:59 (Nieuwe functie.) ]
  zaterdag 17 februari 2007 @ 18:57:26 #216
71919 wonderer
Hung like a My Little Pony
pi_46405108
quote:
Op zaterdag 17 februari 2007 18:51 schreef Light het volgende:

[..]

Die is nog beter Maar pas beschikbaar vanaf MySQL 4.1.
Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46405176
quote:
Op zaterdag 17 februari 2007 18:57 schreef wonderer het volgende:

[..]

Mijn server draait 4.1.12 dus dat moet kunnen. Kun je in een tabel meer keys hebben? Ik heb nu de kolom "ID" als key maar ik wil zoeken op een ander veld.
Dat kan, de ON DUPLICATE KEY clausule is geldig wanneer er een PRIMARY of UNIQUE key overtreden wordt, dus bij een nieuwe PK maar een al bestaande UNIQUE key gaat dat gewoon werken
  zaterdag 17 februari 2007 @ 19:06:11 #218
71919 wonderer
Hung like a My Little Pony
pi_46405329
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46405734
quote:
Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
pi_46405762
quote:
Op zaterdag 17 februari 2007 19:06 schreef wonderer het volgende:
Oh, bah, ik bedenk me net dat het een veel op veel relatie is... (karakters in verhalen. Een karakter kan in meerdere verhalen zitten en een verhaal kan meerdere karakters hebben). Dus UNIQUE gaat niet werken. Het moet de combinatie van karakter en verhaal zijn...

Hm, nou ja, die on duplicate kan ik nog wel voor andere dingen gebruiken. Dus helemaal nutteloos was het niet
Een key kan best op meer dan 1 veld slaan.
  zaterdag 17 februari 2007 @ 19:31:33 #221
71919 wonderer
Hung like a My Little Pony
pi_46406059
quote:
Op zaterdag 17 februari 2007 19:20 schreef JeRa het volgende:

[..]

Je weet dat je een UNIQUE constraint ook op meerdere velden tegelijk kunt plaatsen? Dus, in jouw geval, een combinatie van karakter en verhaal?
Nee? Leg uit

Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46406455
quote:
Op zaterdag 17 februari 2007 19:31 schreef wonderer het volgende:

[..]

Nee? Leg uit

Ik heb het nou trouwens veranderd naar een cvs-stukje in een veld dat ik dan bij het ophalen met explode kan doen en dan is het ook klaar. Maar vertel vooral over dat unique gedoe want het komt regelmatig terug.
Je kunt een UNIQUE constraint leggen op één veld (UNIQUE(a)) of op meerdere velden (UNIQUE(a, b)). In dat geval mogen er geen twee records voorkomen waarbij a én b hetzelfde zijn dus dan zijn meerdere records met eenzelfde waarde voor veld a mogelijk, maar dan moet b wel verschillen.
  zaterdag 17 februari 2007 @ 19:55:35 #223
71919 wonderer
Hung like a My Little Pony
pi_46406828
Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_46406956
quote:
Op zaterdag 17 februari 2007 19:55 schreef wonderer het volgende:
Ooh, okee, dat doe je in de query en niet in de tabel zelf. Thanks.
Als je het over die unique constraints hebt: die doe je wel in de tabel zelf
pi_46412170
quote:
Op zaterdag 17 februari 2007 18:48 schreef JeRa het volgende:

[..]

INSERT ... ON DUPLICATE KEY UPDATE met een primary key?
Dat lijkt heel erg op REPLACE. Heeft dat hetzelfde effect?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')