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

Последние новости: 12 ноября 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-инъекций
Важно! Установка средств мониторинга компьютеров Вы не владеете или не имеете разрешения для монитора может нарушить местным, государственным или Федеральным законом.
Предложить перевод