Ik heb mij eens zitten verdiepen in parametrized queries en SQL Injection.
Ik hier een aantal topics over doorgelezen en nog een aantal tutorials en webartikelen doorgenomen.
Daarin kwam naar voren dat je data die van de client komt nooit kunt vertrouwen.
Zo kan men bijvoorbeeld SQL Injection gebruiken.
Ik las echter dat parametrized queries hierin de uitkomst biedt.
Mijn vraag is of je bij het gebruik van parametrized queries nooit meer last zult hebben van SQL Injection?
En is het dan nog nodig om de teruggekregen data te escapen, of voorziet de parameterized queries hierin? ( Ik neem aan dat het wel nodig is om de data te controleren ivm met datatype errors.)
Ook las ik ergens dat het aanmaken van de parameters in de juiste volgorde moet gebeuren omdat er geen rekening met de parameters wordt gehouden. Geldt dit ook voor asp/vbscript?
Ik snap alleen nog niet waarom de parameter bij het juiste veld wordt gebruikt. Aan die ? is immers toch weining af te leiden. (alleen dat er een parameter hoort, maar niet welke)
Of komt dat door de naam van de parameter (Moet die hetzelfde zijn als het veldnaam?)
Of juist door de volgorde...
Ik hier een aantal topics over doorgelezen en nog een aantal tutorials en webartikelen doorgenomen.
Daarin kwam naar voren dat je data die van de client komt nooit kunt vertrouwen.
Zo kan men bijvoorbeeld SQL Injection gebruiken.
Ik las echter dat parametrized queries hierin de uitkomst biedt.
Mijn vraag is of je bij het gebruik van parametrized queries nooit meer last zult hebben van SQL Injection?
En is het dan nog nodig om de teruggekregen data te escapen, of voorziet de parameterized queries hierin? ( Ik neem aan dat het wel nodig is om de data te controleren ivm met datatype errors.)
Ook las ik ergens dat het aanmaken van de parameters in de juiste volgorde moet gebeuren omdat er geen rekening met de parameters wordt gehouden. Geldt dit ook voor asp/vbscript?
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| dim sqlquery sqlquery = "SELECT id, foo FROM tbl_foo WHERE id=? AND foo=?;" With objCom .ActiveConnection = objCon .CommandText = sqlquery .CommandType = adCmdText .Parameters.Append .CreateParameter("@id", adInteger, adParamInput, 4, intID) .Parameters.Append .CreateParameter("@foo", adVarWChar, adParamInput, 4, strFoo) .Execute End With |
Ik snap alleen nog niet waarom de parameter bij het juiste veld wordt gebruikt. Aan die ? is immers toch weining af te leiden. (alleen dat er een parameter hoort, maar niet welke)
Of komt dat door de naam van de parameter (Moet die hetzelfde zijn als het veldnaam?)
Of juist door de volgorde...