Toon posts:

[ASP.NET en MS SQL] Quotes escapen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik een SQL query maak in code, en daar een variable uit een usercontrol in heb staan is dit gevoelig voor SQL injection.

Normaliter zou ik addslashes() gebruiken in php, maar nu moet ik een stuk code schrijven in ASP.NET voor de paar regels die we niet via een stored procedure doen.

Hoe kan ik het beste de ' en de " vervangen of escapen om sql injection te voorkomen in ASP.NET en MS SQL?

Ik heb geprobeerd om bijvoorbeeld ' te vervangen door ''' maar dit geeft in sommige gevallen toch nog problemen.... Dan kan ik nog gewoon injecten:
Incorrect syntax near the keyword 'HAVING'.
Unclosed quotation mark after the character string ' )'.

Na gefilterd te zijn door:
sqlCommand = sqlCommand.Replace("'", "'''")

Opzich kan ik ook alles in een keer vervangen door bijvoorneeld " oid maar mijn collega vind dat geen juiste oplossing omdat er ook normale bestaande Windows Applicaties op die database draaien....

  • whoami
  • Registratie: December 2000
  • Laatst online: 19-02 23:53
SQL Injection voorkomen: Parametrized Queries gebruiken; hoef je niets te escapen en heb je ook geen problemen met datums.

klik

Ik vraag me af hoe mensen er toch altijd bij komen om geen parametrized queries te gebruiken. AFAIK bestaat dit al eeuwen, en dit wordt toch ook in iedere (goede) tutorial of (goed) boek uitgelegd.

[ Voor 94% gewijzigd door whoami op 15-06-2006 16:10 ]

https://fgheysels.github.io/


  • Javache
  • Registratie: Mei 2006
  • Laatst online: 13-02-2010
whoami schreef op donderdag 15 juni 2006 @ 16:09:
SQL Injection voorkomen: Parametrized Queries gebruiken; hoef je niets te escapen en heb je ook geen problemen met datums.

klik
Bestaat dit ook op één of andere manier in PHP, dit lijkt me wel interessant

Verwijderd

MySQL4/5 gebruiken met parametrized queries icm pear::db bijvoorbeeld? :)

  • rollebol
  • Registratie: Mei 2000
  • Laatst online: 22-08-2025
Als je eerst een query had als volgt:
C#:
1
command.CommandText = "SELECT * FROM Tabel WHERE Id = " + getal.ToString();
Vervang die code dan door dit:

C#:
1
2
command.CommandText = "SELECT * FROM Tabel WHERE Id = @Key";
command.Parameters.AddWithValue("@Key", getal);
Vervolgens gewoon (bijvoorbeeld) ExecuteReader uitvoeren als voorheen. Dat is alles.

(Gebruik je nog .NET 1.1, vervang AddWithValue dan door Add)

Edit: Zo doe je het toch ook met stored procedures, neem ik aan? :?

[ Voor 13% gewijzigd door rollebol op 16-06-2006 00:01 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 19-02 23:53
rollebol: tja, dat is al een uur of 8 geleden gezegd. :)

https://fgheysels.github.io/

Pagina: 1