Помощь по внедрению SQL - PullRequest
2 голосов
/ 14 апреля 2010

Пожалуйста, помогите мне защитить мои данные от внедрения SQL.Я заменил 'с' '(одиночная кавычка с 2 кавычками) при выполнении любой операции на сервере SQL.Пожалуйста, скажите мне, что все, что мне нужно сделать, чтобы предотвратить инъекцию SQL моего приложения.мое приложение находится на asp.net 2.0

я буду использовать параметризованные запросы, но как насчет моих старых проектов?*

Скажите, пожалуйста, можно ли вставить SQL инъекцию, даже если я заменил 'на'?

Ответы [ 3 ]

9 голосов
/ 14 апреля 2010

Лучшее, что вы можете сделать, - это использовать параметризованные запросы, если язык / инфраструктура это поддерживает.

РЕДАКТИРОВАТЬ: asp.net может справиться с этим. Используйте SqlCommand

Пример из здесь -

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored 
    // in an xml column. 
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics.
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
1 голос
/ 14 апреля 2010

Я не уверен, но я не думаю, что есть какой-нибудь быстрый и простой способ защитить ваши старые проекты от атак SQL-инъекций.

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

Или вы можете сделать то, что предлагает Одед, и переписать свои старые проекты с помощью библиотеки.

1 голос
/ 14 апреля 2010

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

Не создавайте строку запроса вручную и, если вам нужно передать параметры, используйте параметризованные запросы и хранимые процедуры.

См. этот пример в VB.NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...