Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Не работает валидатор Добавлено: 16.10.08 16:10  

Автор вопроса:  katt
Здравствуйте. Скажите пожалуйста, в чем закралась ошибка?

Есть форма регистрации, на ней TextBox:
  <asp:TextBox ID="BoxLogin" runat="server"></asp:TextBox>

Для прорверки индивидуальности логина есть валидатор:
 <asp:CustomValidator ID="CustomValidatorLogin" runat="server" ErrorMessage="Этот Логин занят" ControlToValidate="BoxLogin" OnServerValidate="CustomValidatorLogin_ServerValidate"></asp:CustomValidator>

Подпрограмма проверки:Protected Sub CustomValidatorLogin_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidatorLogin.ServerValidate
        Dim dbConn As OleDbConnection
        Dim dCmd As OleDbCommand
        Dim dr As OleDbDataReader
        Dim strConnection As String
        Dim strSQL As String
        strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\auth.mdb;Persist Security Info=False"
        dbConn = New OleDb.OleDbConnection(strConnection)
        dbConn.Open()

        strSQL = "SELECT login FROM AppUser WHERE login=" + args.Value + ""
        dCmd = New OleDbCommand(strSQL, dbConn)

        dCmd.Parameters.Add(New OleDbParameter("login", args.Value))
        dr = dCmd.ExecuteReader()

        If (dr.Read()) Then
            args.IsValid = False
        End If
        dr.Close()
        dbConn.Close()
    End Sub

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #1 Добавлено: 17.10.08 11:56
Если база 2003 и ниже, то поправь запрос:
  1. strSQL = "SELECT login FROM AppUser WHERE login=" + args.Value + ""

на
  1. strSQL = "SELECT login FROM AppUser WHERE login=""" & args.Value.ToString() & "" & ";"

писал по памяти, где-то так это выглядит.

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 28.10.08 01:30
Ребята, ну не надо уж ТАК позориться, а?
Может хотя бы одинарные ковычки заэскейпм?

args.value.tostring.replace("'", "''";)

А кто-то еще говорил что с выходом Visual Studio 2008 SQL-Injection умер..............................

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 28.10.08 08:29
SQL-Injection жил, жив и будет жить!!! Он вечен! :-))))

Ответить

Номер ответа: 4
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #4
Добавлено: 28.10.08 08:38
А кто-то еще говорил что с выходом Visual Studio 2008 SQL-Injection умер

он умрет, когда у кодеров руки начнут расти от туда, откуда положено, и голова будет использоваться не только для еды :)

Скажите пожалуйста, в чем закралась ошибка?

strSQL = "SELECT login FROM AppUser WHERE login=?"
        dCmd = New OleDbCommand(strSQL, dbConn)

        dCmd.Parameters.Add(New OleDbParameter("@login", args.Value))
        dr = dCmd.ExecuteReader()

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам