Подтвердить что ты не робот

Вставка в БД с безопасными параметрами от SQL-инъекции?

Я немного читал о SQL-инъекции, и я хочу быть уверенным, что мой код позволяет сказать "безопасно" от него, я планировал использовать валидаторы RegExp для проверки ввода пользователя, но другое сообщение здесь предлагалось только с использованием параметризованных запросов, ну, я использую их, но я хочу быть уверен, что мой код в безопасности, не так ли?

        using ( SqlConnection dataConnection = new SqlConnection(myConnectionString) )
        {
            using ( SqlCommand dataCommand = dataConnection.CreateCommand() )
            {
                dataCommand.CommandText = "INSERT INTO Lines (Name, CreationTime) " +
                    "VALUES (@LineName, @CurrentDateTime)";

                dataCommand.Parameters.AddWithValue("@LineName", TextBox2.Text);
                dataCommand.Parameters.AddWithValue("@CurrentDateTime", DateTime.Now.ToString());
                dataConnection.Open();
                //do other DB stuff

Я отрубаю последнюю часть, чтобы сделать пост короче, остальное просто пытается и ловит исключения и закрывает соединение db, а также обеспечивает обратную связь с пользователем при успешной вставке.

4b9b3361

Ответ 1

Ваш код в порядке, он защищен от инъекций, потому что значения передаются как параметры, а не строковые литералы. Однако, если вы пишете этот тип доступа к данным самостоятельно, подумали ли вы о создании объектов SqlParameter и явно указали тип, размер и т.д. И добавили параметры в команда? AddWithValue будет работать нормально, но SQL Server должен будет определить тип, немного, но ненужные служебные данные.

Ответ 2

Ну, вы всегда можете попробовать ввести инструкцию SQL в текстовое поле, которое, вероятно, даст вам более быстрый, определенный ответ.

Ответ 3

Да, это разумно безопасно. До тех пор, пока вы не используете "обработанные" переменные из подготовленного оператора для генерации динамического sql позже, вы обычно в порядке. Тот факт, что вы используете подготовленный оператор, позаботится о том, чтобы справиться с escape-символами и другими простыми способами инъекции.

Я бы не отказался от какой-либо другой проверки, хотя...