sql >> Database teknologi >  >> RDS >> Sqlserver

Forebyggelse af SQL-injektion i ASP.Net

Prøv at bruge en parameteriseret forespørgsel her er et link http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

Brug heller ikke OpenQuery... brug dette til at køre select

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

Flere artikler, der beskriver nogle af dine muligheder:

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

Hvad er T-SQL-syntaksen for at oprette forbindelse til en anden SQL Server?

Redigeret

Bemærk:Dit oprindelige spørgsmål var om distribuerede forespørgsler og linkede servere. Denne nye erklæring refererer ikke til en distribueret forespørgsel. Jeg kan kun antage, at du opretter direkte forbindelse til databasen nu. Her er et eksempel, der burde virke. Her er et andet referencested til brug af SqlCommand.Parameters

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

Redigeret:

Ok Jamie taylor, jeg vil prøve at besvare dit spørgsmål igen.

Du bruger OpenQuery, fordi du sandsynligvis bruger en linket DB

Grundlæggende er problemet, at OpenQuery-metoden tager en streng, du ikke kan sende en variabel som en del af den streng, du sendte til OpenQuery.

Du kan formatere din forespørgsel sådan i stedet. Notationen følger servernavn.databasenavn.skemanavn.tabelnavn. Hvis du bruger en linket server via odbc, så udelad databasenavn og skemanavn, som illustreret nedenfor

    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. Oversigt over T-SQL PRINT-erklæring

  2. Brug af pseudokolonner med en sammenkædet server

  3. Liste over MySQL-datoformatspecifikationer

  4. Hvad er bedre i MYSQL count(*) eller count(1)?