sql >> Database >  >> RDS >> Sqlserver

SQL-injectie in ASP.Net voorkomen

Probeer een geparameteriseerde query te gebruiken, hier is een link http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

Gebruik ook geen OpenQuery... gebruik dit om de selectie uit te voeren

SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno

Meer artikelen die enkele van uw opties beschrijven:

http://support.microsoft.com/kb/314520

Wat is de T-SQL-syntaxis om verbinding te maken met een andere SQL Server?

Bewerkt

Opmerking:uw oorspronkelijke vraag ging over gedistribueerde zoekopdrachten en gekoppelde servers. Deze nieuwe instructie verwijst niet naar een gedistribueerde query. Ik kan alleen maar aannemen dat u nu rechtstreeks verbinding maakt met de database. Hier is een voorbeeld dat zou moeten werken. Hier is een andere referentiesite voor het gebruik van SqlCommand.Parameters

SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con); 
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;

Bewerkt:

Ok Jamie Taylor, ik zal proberen je vraag opnieuw te beantwoorden.

U gebruikt OpenQuery omdat u waarschijnlijk een gekoppelde database gebruikt

Het probleem is eigenlijk dat de OpenQuery-methode een string neemt die je niet kunt doorgeven aan een variabele als onderdeel van de string die je naar OpenQuery hebt gestuurd.

U kunt uw query in plaats daarvan als volgt opmaken. De notatie volgt servernaam.databasenaam.schemanaam.tabelnaam. Als u een gekoppelde server via odbc gebruikt, laat dan databasenaam en schemanaam weg, zoals hieronder geïllustreerd

    Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
    Dim cmd As SqlCommand = conn.CreateCommand()
    cmd.CommandText = "Select * db...table where investor = @investor"
    Dim parameter As SqlParameter = cmd.CreateParameter()
    parameter.DbType = SqlDbType.Int
    parameter.ParameterName = "@investor"
    parameter.Direction = ParameterDirection.Input
    parameter.Value = 34


  1. Evolutie van fouttolerantie in PostgreSQL:synchrone commit

  2. Hoe SESSION_CONTEXT() werkt in SQL Server

  3. Verschil tussen tijdstempels in milliseconden in Oracle

  4. Hoe MySQL-databases in de opdrachtregel te importeren