SQL Injection prevention with Microsoft Access and VB.NET

后端 未结 1 644
一个人的身影
一个人的身影 2020-12-11 06:05

I\'m a beginner in ASP.NET so I have some questions about how to prevent SQL injection in ASP.NET. My programming language is VB.NET, not C#, and I\'m using Microsoft Access

1条回答
  •  情歌与酒
    2020-12-11 06:19

    Here is a very simple ASP.NET example using a parameterized query via OleDb in VB.NET:

    Default.aspx

    <%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false"
        CodeBehind="Default.aspx.vb" Inherits="vbOleDbSite._Default" %>
    
    
    
    
        

    First Name:
    Last Name:
     
     
    Status: Awaiting submission...

    Default.aspx.vb

    Public Class _Default
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        End Sub
    
        Protected Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
            Dim newID As Long = 0
            Using con As New OleDb.OleDbConnection
                con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\__tmp\testData.accdb;"
                con.Open()
                Using cmd As New OleDb.OleDbCommand
                    cmd.Connection = con
                    cmd.CommandText = "INSERT INTO UsersTable (LastName, FirstName) VALUES (?, ?);"
                    cmd.Parameters.AddWithValue("?", Me.LastName.Text)
                    cmd.Parameters.AddWithValue("?", Me.FirstName.Text)
                    cmd.ExecuteNonQuery()
                End Using
                Using cmd As New OleDb.OleDbCommand
                    cmd.Connection = con
                    cmd.CommandText = "SELECT @@IDENTITY"
                    newID = cmd.ExecuteScalar()
                End Using
                con.Close()
            End Using
            Me.spanStatus.InnerText = "User """ & Me.FirstName.Text & " " & Me.LastName.Text & _
                    """ has been added (ID: " & newID.ToString() & ")."
        End Sub
    End Class
    

    Notes:

    • The parameterized query uses "?" instead of "real" names for the parameters because Access OLEDB ignores parameter names. The parameters must be defined in the exact order that they appear in the OleDbCommand.CommandText.

    • The [UsersTable] table has an AutoNumber primary key, and SELECT @@IDENTITY retrieves the new key value created by the INSERT INTO statement.

    0 讨论(0)
提交回复
热议问题