Jeroen_de_G: Ten eerste is de query zoals je die in je voorbeeld geeft bedoeld voor ID's (of een numerieke waarde). Dat moet je dus zowieso checken voordat je die aan SQL dorgeeft. En als je strings gebruikt zoals in onderstaand voorbeeld kan het geen kwaad:
code:
1
| "Select * from klant where klantnaam = '" & Replace(Textbox1.Text,"'","''") & "'" |
In jouw geval zou dat dus de query:
code:
1
| Select * from klant where klantnaam = 'RobIII;DROP TABLE KLANT' |
Er wordt dus gewoon gezocht op "
RobIII;DROP TABLE KLANT".
Escapen m.b.v. een single quote (') lukt ook niet dankzij de replace. Dus de waarde:
in je textbox gooien levert gewoon dit op:
code:
1
| Select * from klant where klantnaam = 'RobIII;''DROP TABLE KLANT' |
En dus wordt er gewoon gezocht op "
RobIII;DROP TABLE KLANT". No problemo lijkt me.
En als je het echt op safe wilt spelen, dan moet je niet eens query's doorgeven, maar stored procedures aanroepen, en die m.b.v. het Parameter object z'n parameters geven. Veiliger dan dat kan <haast?> niet...
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij