This is a machine translation. The original page (in English) is available here.
Окна
Мак ОС
Мобильный

Последние новости: 19 сентября, 2016 - мы добавили новые категории для контроля испытаний продукции: микрофон и веб-камера, запись и т. д... RSS канал

Главная>Мировые новости>объявить войну SQL-инъекций

AnyKeylogger для Mac

Объявить войну атак путем внедрения кода SQL

Мы должны искоренить SQL-инъекций сейчас. SQL-инъекции должно быть поколение Интернета оспы или полиомиелита-навсегда. Контрмеры доступны и понятны. Они легко реализовать. И еще, я так и вижу заголовки вроде "огромный атаки на веб взломать заражает 500.000 страниц."

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

И теперь злоумышленники начали с помощью SQL инъекции вредоносных растений на веб-сайтах, так что посетители этих сайтов получают свои компьютеры, зараженные вредоносными программами. Базы данных не только там, где сочные цели; они созрели для посадки вредоносных данных, который заражает компьютеры других людей.

Это поднимает ставки и делает еще более убедительным аргументом в пользу искоренения всех один SQL дефект впрыска в существование. Мы должны убедиться, что нет будущего приложения имеют дефекты SQL-инъекций. Давайте внимательнее посмотрим чем занимается.

SQL, или Язык структурированных запросов, это интерпретируемый язык базы данных, который обычно используется в серверах приложений, разговаривая с серверами баз данных. Базы данных где, как я сказал, мы храним такие вещи, как записи клиентов. Запись может содержать имя клиента, адрес электронной почты, номер телефона, кредитной карты и платежную информацию.

Как это работает

Для просмотра одного клиента в базе данных, SQL-запрос строится в сервер приложений и послал к базе данных, который возвращает информацию о том, что клиента и не более того. Запрос может выглядеть примерно так:

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

Строка запроса = "выбрать * из клиенты где фамилия='" + запр.getParameter("имя") + "'";
Видят проблему еще? Ну, в нормальном функциональном случае, пользователь вводит фамилию, например "Иванов" в этой области, но злоумышленник может ввести значение " или '1'='1'-". Что бы в результате запроса, как в следующем отправкой на сервер:

выбрать * из клиенты где фамилия=" или '1'='1'
Что логическое выражение (фамилия=" или '1'='1') всегда будет True, что приведет в базе данных сервера отвечает с все содержимое поддержки табличных данных. То есть, наш злоумышленник скорее всего удалось извлечь данные клиента каждого из наших клиентов. Не хорошо.

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

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

Как это исправить

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

Строку "фамилия" = запр.getParameter("фамилия"); строка запроса = "выбрать * из клиенты где фамилия = ?" Объект preparedstatement pstmt = подключение.prepareStatement( запроса ); pstmt.метод setstring(1, "фамилия"); попробовать { результаты результирующего = pstmt.выполнить( ); }
Итак, это пара строк кода, но это просто образец для подражания. И результатов функционально идентичен уязвимым образованием, но без уязвимости.

Если мы просто пройти через наш веб-приложениям и изменить все наши запросы SQL в форме подготовленного оператора, то можете полностью уничтожить каждую слабость SQL-инъекций в мире. Серьезно.

Мы все еще имеем много других вопросов, как межсайтовый скриптинг (также известный как "межсайтовый скриптинг"), но мы исключили этот вопрос из SQL-инъекции совершенно.

Я знаю, что вы должны думать: это не может быть так просто, иначе мы бы покончили с SQL инъекцией лет назад. Это будет справедливо лишь отчасти. На техническом уровне это просто. Но на человеческом уровне, не так много.

Чтобы исправить проблему SQL-инъекции, несколько предварительных условий. Один, нам нужно иметь доступ к исходному коду приложения. Если наша заявка была на аутсорсинге, или если мы полагаемся на сторонний код, это не может быть такая простая вещь, вообще.

И это только одна из человеческих препятствий, я слышал, как оправдываться за не устранение дефектов безопасности. Есть и много других.

Но давайте, народ, мы заслуживаем лучше, чем статус-кво. В нашей компании заслуживают лучшего; наши пользователи заслуживают лучшего; ведь наши клиенты заслуживают лучшего. Давайте перестанем оправдываться и начните делать причины. Сделать это цель, чтобы пройти через ваши веб-приложения теперь и искоренить каждую слабость SQL-инъекций. И пока вы на него, убедитесь, чтобы научить каждого из ваших разработчиков программного обеспечения как сделать безопасный вызовы SQL.

Больше никаких SQL-инъекций. Больше никаких оправданий.
Главная>Мировые новости>объявить войну SQL-инъекций
Важно! Установка средств мониторинга компьютеров Вы не владеете или не имеете разрешение монитора может нарушить местным, государственным или Федеральным законом.
Предложить перевод