Как я могу манипулировать запрос с помощью двойных кавычек? - PullRequest
0 голосов
/ 18 декабря 2011

У меня одна проблема с базой данных, если мой sql такой:

Dim Username
Username = request.form(trim("username"))
Username = Replace(username,"'","''") 

Dim email
email = request.form(trim("email"))
email = Replace(email,"'","''")

Dim question
question = request.form(trim("question"))
question = Replace(question,"'","''")

Dim answer
answer = request.form(trim("answer"))
answer = Replace(answer,"'","''")


Dim date_answered
dag = Day(Now())
maand = Month(Now())
jaar = Year(Now())
uur = Hour(Time)
minuten = Minute(Time)
seconden = Second(Time)
datum= jaar & "-" & maand & "-" & dag
tijd = uur & ":" & minuten& ":" & seconden
date_answered = (datum & " " & tijd)

Dim isActive
isActive = "yes"    
sql="UPDATE faqtbl SET "
      sql=sql & "Name='" & username & "',"
      sql=sql & "email='" & email & "',"
      sql=sql & "question='" & question & "',"
      sql=sql & "answer='" & answer & "',"
      sql=sql & "date_answered='" & date_answered & "',"
      sql=sql & "isActive='" & isActive & "'"
      sql=sql & " WHERE ID='" & lngRecordNo &"';"
      on error resume next

Нет никаких проблем, пока данные, которые я хочу добавить в базу данных, не используют двойные кавычки. Пожалуйста, помогите, как я могу манипулировать запросом с помощью двойных кавычек? спасибо ..:)

1 Ответ

5 голосов
/ 18 декабря 2011

В вашем коде есть проблема, даже если данные не используют кавычки: ваши динамически сгенерированные операторы SQL широко открыты для SQL-междометий атак.Вам необходимо переписать ваш запрос на использовать параметры запроса .Это решит проблему с кавычками и сделает ваш SQL более надежным.

Вот краткий пример того, как изменить update для использования параметров:

Imports System.Data.SqlClient
Public Class Example
    Private Sub Update(ByVal userName As System.String, _
            ByVal email As System.String)
        Dim con As SqlConnection = New SqlConnection( _
            "Data Source=.;Integrated Security=True;<...>")
        con.Open()
        Dim cmdText As String = _
            "UPDATE faqtbl SET Name=@UserName,Email=@email"
        Dim cmd As SqlCommand = New SqlCommand(cmdText, con)
        With cmd.Parameters
            .Add(New SqlParameter("@UserName", userName))
            .Add(New SqlParameter("@email", email))
        End With
        cmd.ExecuteNonQuery()
        con.Close()
        con = Nothing
    End Sub
End Class
...