С чего начать изучение баз данных
Как изучать Базы Данных? С чего начать? Какой СУБД выбрать? Что читать? Где искать информацию?
Можно ли пользоваться SQL без СУБД?
Говорят, что MySQL глючный, часто падает и портит информацию
Можно ли при учебе развернуть БД на ноутбуке?
Для начала усвоить разницу между БД и СУБД (которая не «который», поскольку система).
По остальному в google://, слишком много вопросов в одном вопросе.
В итоге изучай MySQL и не парься. Этой технологии сто лет в обед. А зная её основы (всё про БД тебе просто на начальном этапе вообще не пригодиться), ты прекрасно будешь чувствовать себя и с простыми решениями (Sqlite) и с более продвинутыми PostgreSQL.
Я MySQL запросами интересовался лет 10 назад. Сейчас пользуюсь и PostgreSQL и Sqlite и иногда MySQL и как-то не вижу прямо кардинальных каких-то различий. Ну тонкости, но не более. А вообще я всё чаще и чаще использую проекты с ORM.
По поводу установки. Если винда, то у меня PostgreSQL ставиться гораздо быстрее, чем MySQL сервер. Можно ещё поставить всякие там пакеты для разработки поставить. Вот посмотри статья старая, но может чего там обновили и тебе оно как раз и нужно. XAMPP очень говорят популярен. А в моё время был Denwer.
Ответ зависит от того, на какой бекэнд стек вы будете ориентироваться. А это зависит от того где бы будете искать работу.
Для выполнения sql запросов нужна какая-то СУБД хотя бы даже встроенная типа sqlite.
Вторая и третья бесплатные и можно поставить на ноут, у четвертой есть developer edition, которая тоже бесплатная для целей изучения.
У некоммерческих БД меньше всяких возможностей, но для мелких вебпрректов они больше используются.
Если хотите знать глубоко можно начать с теоретических основ реляционной алгебры и параллельно изучать что-то на примере.
Можно поискать в интернете «учебник по [название СУБД]» или «[название СУБД] tutorial» так же разобраться что такое индексы, нормальная форма, инфологическая модель, физическая модель.
Как изучить язык баз данных SQL?
Простой 4 комментария
Если ты совсем ноль, то самое первое – это скачивай книгу “Освой самостоятельно SQL за 10 минут”.
Далее. Заходишь на сайты: 1) sql-ex.ru (выбираешь синтаксис); 2) sql-tutorial.ru (там синтаксис T-SQL). Решаешь около 60 обучающих задач на DML и около 20 на DDL.
Далее. Скачиваешь книгу Святослава Куликова “Работа MYSQL, MS SQL SERVER и ORACLE в примерах”. Тут определяешься с базой данных. Если это SQL Server, то скачиваешь на торренте данную СУБД. Если Oracle, то скачиваешь образ для WMvare с их сайта, или используешь их online СУБД.
Далее. Находишь в зависимости от СУБД серьезные книжки. Если ты хочешь быть базистом, то, чтобы проверить потянешь ли, сдай на sql-ex экзамен на базовый сертификат, для этого нужно решить рейтинговые задачи. Если не сможешь, то будут большие трудности в работе программистом БД.
Далее, последний этап. Сдаешь экзамены от вендора.
Если ты просто программист, не базист, то тебе просто азы нужны.
P.s. Жаль, что администрация удаляет качественные вопросы касаемо сферы программирования, ее минусов и перспектив. Очень жаль, но я понимаю, монетизация сайта.
Если вы выбрали MS SQL Server:
Если Вы выбрали Postgresql, то официальное руководство там исчерпывающее.
По Oracle и MySQL советов дать не могу, ибо дела не имел. Удачи!
Книги это, конечно, здорово, но как показывает практика, большинство книги либо забрасывает, либо просто читает и не особо новые знания впитывает. (если речь о начинающих разработчиках, которые прям с нуля начинают книгу читать)
Ну а овладев азами можно уже и книгу брать, чтобы закрыть пробелы, либо документацию по конкретной СУБД
большинство книги либо забрасывает, либо просто читает и не особо новые знания впитывает
Не стоит быть таким начинающим.
1) Знакомство с основами реляционной алгебры, нормальными формами и реляционной моделью. Без фанатизма, прочтение и осознание статей даже на Википедии хватит за глаза.
2) Знакомство с спецификацией SQL2008. Опять же, без фанатизма. В любом случае, работать Вы будете впоследствии с определенным диалектом языка.
3) Выбор диалекта языка. Подбор литературы (практически любой, за исключением книг из серии » <0>для чайников» и «100 и одно решение для <0>«). На этом этапе важно определиться также с инструментарием, который Вы будете использовать в дальнейшем. Для начала подойдет любой онлайн интерпретатор SQL кода, к примеру sqlfiddle. Но по мере изучения Вам понадобятся более сложные инструменты.
Итак. Четыре базовых шага выполнены. Дальше все просто, перевариваете информацию и занимаетесь практикой от простого к сложному (в комментариях уже указывали вполне годные наборы задачек). Попутно узнаете особенности программной реализации выбранной Вами СУБД. И внимательно читаете документацию от разработчика. На примере SQLite, у них подробно разобрана семантика запросов: SQLite CREATE. Под MySQL найдете сами.
Я, как и многие, начинал с какого-то полу прочитанного учебника и примеров из сети. Сейчас я понимаю, что просто потратил время практически впустую. Как ни странно, хоть и принято ругать наше образование, но список курсов для специальностей «ПИ» подобран не просто так. Помимо самого языка следует знать математический «бэкенд» и как его использовать для реализации задач предметной области. Я отношусь к SQL потребительски, это не мой основной язык, но сейчас я понимаю, что если бы уделил ему больше внимания не как языку, а, в первую очередь, как к одному из инструментов СУБД, работающих на основе реляционной алгебры для обеспечения бизнес-процессов, я бы избежал кучу потерянного времени, костылей и ошибок. Надеюсь, мой ответ будет Вам полезен.
Как выучить SQL (пошаговое руководство) в 2021 году 🔥
В связи с постепенным сдвигом в цифровых технологиях в последние годы каждую секунду генерируются триллионы байтов данных. Некоторые эксперты справедливо сказали: «Данные — это новая нефть!». Данные, генерируемые пользователями, бывают разных форм — они генерируются при просмотре социальных сетей, просмотре фильмов, покупках через онлайн-порталы, транзакциях онлайн-банкинга и т. д.
Так что толку от таких больших объемов данных? Что ж, эти данные организованы в соответствии с потребностями компаний в размещении целевой рекламы, чтобы привлечь клиентов к просмотру и покупке их продуктов. Эти данные используются для анализа поведения клиентов, чтобы компании и предприятия могли улучшить взаимодействие с пользователем, увеличить свои продажи или повысить качество обслуживания.
Однако генерируемые данные крайне неорганизованы и должны быть очищены, прежде чем они могут быть проанализированы экспертами. Кроме того, еще одной сложной задачей является хранение таких огромных объемов данных. В настоящее время существует несколько решений для больших данных, которые помогают компаниям хранить, систематизировать и анализировать большие объемы данных. Но какие уже структурированные данные поступают с веб-сайтов. К ним относятся данные для входа / регистрации, данные кредитной карты, данные профиля пользователя, история покупок в Интернете и т. д. Эти данные могут быть повторно использованы компаниями при следующем посещении их веб-сайтов. Очевидно, что для повторного использования его нужно хранить где-то в надежном месте.
Крупные серверные узлы устанавливаются либо в облаке, либо на физических машинах с огромными базами данных, в которых хранятся такие данные. Теперь существует несколько типов баз данных, которые можно использовать для разных целей. А для управления различными типами баз данных вам потребуется определенный набор навыков, называемый управлением базами данных. Давайте сначала обсудим различные типы баз данных.
1. Иерархическая база данных
Этот тип базы данных имеет древовидную структуру, в которой есть родительский узел, а каждый родительский узел имеет несколько дочерних узлов, связанных с ветвями. Родительские узлы представляют данные более высокого уровня, а дочерние узлы представляют информацию более низкого уровня, а ветви представляют отношения между этими узлами.
2. Объектно-ориентированная база данных
У этого типа базы данных есть ключевые компоненты, такие как классы и объекты. Объекты можно определить как экземпляры классов в реальном времени. В них хранятся записи или фактические данные, которые нужно сохранить. У классов есть функции, методы или переменные, которые определяют операции, выполняемые с этими объектами или данными.
3. Сетевая база данных
Этот тип базы данных имеет сетевую структуру. Он поддерживает отношения «многие ко многим» между узлами и был разработан для решения проблем с иерархической базой данных.
4. Реляционная база данных
В таких базах данных данные хранятся в форме записей или таблиц, столбцы которых определяют тип данных, а строки содержат фактическую часть информации. Таблицы могут формировать отношения с другими таблицами на основе условий.
Наиболее распространенным типом базы данных, который активно используется в организациях для хранения данных в организованном, защищенном и надежном виде, является реляционная база данных. Реляционные базы данных обладают высокой масштабируемостью и гибкостью, когда дело доходит до доступа к определенным наборам информации. SQL или язык структурированных запросов — это язык программирования, который используется для запросов к реляционным базам данных и поиска записей или фрагментов информации из таблиц.
Что такое SQL?
Как обсуждалось ранее, SQL — это язык программирования, который можно использовать для запроса данных в реляционных базах данных. Вы можете создавать, обновлять, изменять, удалять и выполнять другие операции с таблицами в реляционных базах данных. SQL — это декларативный язык или, другими словами, это процедурный язык. Это означает, что пользователь может указать, какой тип данных он хочет, вместо того, чтобы указывать его вместе с тем, как их получить.
Проблемы с традиционной файловой системой
До изобретения SQL или других баз данных данные хранились в файловых системах, которые имели множество применений, связанных с неправильным управлением данными. Хотя мы думаем, что файловые системы выглядят аккуратно организованными, с ними связано множество недостатков, когда дело доходит до хранения, доступа и изменения непрерывных объемов данных. Обсудим некоторые из них.
1. Избыточность данных
Избыточность данных означает, что одна и та же информация хранится в одном или нескольких местах, что приводит к ненужному использованию пространства хранения. В случае файловых баз данных не было возможности искать дубликаты файлов. Кроме того, как следствие, файловая система подвергается угрозам безопасности и утечкам информации.
2. Зависимость от данных
В файловых системах необходимо соблюдать особую структуру. В случае, если мы меняем формат какой-либо записи, нам нужно обновить форматы всех данных, которые от него зависели. Более того, изменения в структуре баз данных на основе файловой системы в значительной степени влияют на производительность приложений.
3. Обмен данными
Совместное использование данных было серьезной проблемой в файловых системах, поскольку это приводило к серьезным рискам безопасности. Даже если мы использовали такие меры безопасности, как шифрование файлов, их защита паролем, блокирование их частей и т. Д., Эти меры недостаточно надежны для обеспечения полной безопасности.
По всем вышеупомянутым причинам возникла острая необходимость в создании новой формы хранения данных, которая решила бы все эти проблемы.
Важность SQL
Давайте рассмотрим несколько важных моментов, которые сделали SQL таким популярным языком запросов.
1. Это повсеместно принято
Когда дело доходит до обработки и организации данных, эксперты и профессионалы обращаются к SQL, не задумываясь. Все популярные базы данных с открытым исходным кодом и бесплатные базы данных поддерживают SQL для запроса информации.
2. Легко научиться
Синтаксис SQL похож на простой естественный язык, и его довольно легко изучить по сравнению со сложным синтаксисом других языков программирования, таких как Java, C ++ и т. Д.
3. Он может обрабатывать большие наборы данных.
По сравнению с Excel и электронными таблицами, SQL может легко обрабатывать большие наборы данных с минимальными усилиями, необходимыми для управления ими.
4. Это дает лучшее представление о наборах данных.
Чтобы извлечь полезную информацию из данных, вам необходимо лучше разбираться в них. SQL позволяет использовать команды для получения взаимосвязей между наборами данных, чтобы лучше понять их.
5. Это стандарт
SQL — это язык запросов, стандартизированный как ISO, так и ANSI. Он довольно стабилен, без больших обновлений синтаксиса, и как только вы его изучите, вам не нужно особо сосредотачиваться на новых выпусках.
6. Это горячий навык
Неважно, хотите ли вы работать в области науки о данных, машинного обучения, управления базами данных, анализа данных и т. Д., SQL — это распространенный навык, который пользуется большим спросом на рынке труда.
Зачем изучать SQL в 2021 году?
Давайте пробежимся по нескольким пунктам, которые позволят вам понять, почему SQL является одним из самых важных навыков, которые вы должны запачкать, чтобы оставаться в курсе лучших навыков и технологий.
Карьера в SQL
В организациях, ориентированных на данные, существует множество профессий и профессий, требующих использования SQL как навыка. Эти организации ищут специалистов по SQL, которые могут применить свое аналитическое мышление с помощью SQL, чтобы лучше понять огромные блоки данных, которые у них есть. Если вы кандидат, который умеет работать с данными и манипулировать ими, вам определенно следует искать карьеру в программировании SQL. Рынок вакансий, связанных с SQL, можно найти как в облачных организациях, так и в тех, кто использует базы данных локально.
Требуется образование
Должности
Оплата труда
Предпосылки для изучения SQL
Чтобы начать изучение языка запросов, такого как SQL, важно, чтобы у вас были знания в следующих областях.
Помимо этого, вы должны обладать хорошими аналитическими навыками и понимать всю цель хранения данных в организованных реляционных базах данных, чтобы вы могли получать полезную информацию из данных, используя сложные запросы через SQL.
Обратите внимание, что даже если у вас нет опыта работы в области компьютерных наук или ИТ и у вас нет предварительных знаний о системах управления базами данных, вам не о чем беспокоиться. Мы предоставим вам все ресурсы, курсы, учебные пособия и документацию, которые вам понадобятся для изучения концепций прямо от базового до продвинутого уровня позже в этой статье. Так что, пожалуйста, оставайтесь с нами до конца.
Как установить SQL?
Давайте посмотрим, как установить SQL Server на ваш компьютер с Windows, который поможет вам писать SQL-запросы, такие как создание баз данных, таблиц, вставка данных в таблицы, изменение и обновление данных и т. Д.
IDE для SQL
IDE или интегрированная среда разработки — это графический инструмент, который позволяет вам управлять всеми файлами, связанными с вашим приложением, и работать с такими инструментами, как полезные пакеты, функции автозаполнения, подсветка синтаксиса и т. Д., Чтобы улучшить ваш опыт разработки.
Хотя это правда, что вы можете создавать базы данных и таблицы и управлять ими прямо из самой командной строки, однако использование IDE всегда будет полезно для получения обзора всех баз данных, запросов, таблиц и других компонентов с высоты птичьего полета. Фактически, есть IDE, в которых есть раздел справки, в котором объясняются основные команды и их использование. Вы можете просто заполнить текстовые поля, выбрать различные предварительно отформатированные команды, нажать кнопку «ОК», и ваша работа будет выполнена. Это так просто. Более того, существуют IDE, которые также позволяют создавать резервные копии и восстанавливать базы данных и таблицы.
Следовательно, всегда разумно выбрать среду IDE, которая удовлетворяет ваши требования, прежде чем вы запачкаете руки SQL. Вот список лучших IDE, которые вы можете использовать для составления сложных SQL-запросов.
1. DBeaver
DBeaver— это среда разработки баз данных на основе Java с открытым исходным кодом. Его можно использовать бесплатно, и в нем есть мощные функции, которые обеспечат бесперебойную разработку.
Функции —
2. PHPMyAdmin
PHPMyAdmin — это многофункциональный инструмент с открытым исходным кодом на основе HTML, который вы можете использовать для управления своими базами данных.
Функции —
3. Adminer
Adminer можно использовать как альтернативу PHPMyAdmin. Он основан на веб-интерфейсе, поддерживает множество плагинов, позволяет работать с несколькими базами данных, такими как Oracle, SQLite и т. Д.
Особенности —
Онлайн-компиляторы
Путь изучения SQL
Предыдущие знания концепций управления базами данных и реляционных баз данных могут быть полезны, однако вам не обязательно знать их, чтобы начать работу с SQL. Вот полный план действий, который поможет вам начать работу с SQL.
Если вы будете следовать этой дорожной карте, вы сможете изучить концепции баз данных, а также команды SQL, которые определенно помогут вам получить хорошее представление обо всей концепции управления базами данных и помогут вам получить преимущество над другими кандидатами для обеспечения безопасности хорошая карьера в СУБД.
Курсы и учебные пособия по SQL
Вот список онлайн-курсов и руководств, которые можно использовать для более подробного и практического изучения SQL. Использование этих курсов предоставит вам четкое руководство и путь, по которому нужно идти, а также некоторые проекты, которые улучшат ваше портфолио и помогут вам начать карьеру.
1. Усовершенствованный учебный курс по MySQL: переход от новичка к эксперту по SQL — Автор: Udemy
Функции —
Ресурсы — 20 часов видео, 141 статья, 4 ресурса, сертификат.
Цена — 8640 индийских рупий.
Рейтинг — 4,6 по 51 134 оценкам.
2. Excel в MySQL: аналитические методы для бизнес-специализации
Функции —
Ресурс — 5 курсов, около 7 месяцев содержания.
Цена — 3576 индийских рупий в месяц.
Рейтинг — 4,6 по 18 019 оценок.
3. Введение в базы данных — Автор EdX
Функции —
Ресурс — 4 месяца содержания по 6-8 часов в неделю. Статьи, видеоуроки, викторины.
Цена — 33144 INR.
Рейтинг — 4.5.
Лучшие бесплатные ресурсы для изучения SQL и СУБД
Помимо всех дорогостоящих онлайн-курсов и руководств, которые мы обсудили выше, вы также можете использовать некоторые из лучших бесплатных ресурсов, доступных в Интернете, для подробного изучения концепций SQL и СУБД. Некоторые из лучших бесплатных ресурсов —
Интернет-ресурсы СУБД
Интернет-ресурсы по SQL
Изучение SQL из документации
Лучшие проекты SQL для начинающих
Лучший способ изучить любую концепцию программирования — это начать работу с проектами, а не просто грабить теорию и синтаксис. Проекты помогут вам найти решения проблем, с которыми вы столкнетесь в реальных ситуациях, они дадут вам более глубокое понимание тем, помогут вам применить свои теоретические знания для создания потрясающих продуктов и, очевидно, улучшат ваше резюме. и портфолио.
Проекты — это проверка ваших навыков. Чтобы начать как новичок, вам следует начать с небольших проектов с меньшим количеством функций и модулей, чтобы при появлении ошибок вы не сдавались. После того, как вам нужно создать несколько небольших проектов, вы можете добавить к ним дополнительные функции или создать новый сложный проект в целом.
Вот список лучших проектов SQL для начинающих.
1. Система управления библиотекой
Вы можете создать простое веб-приложение с подключением к базе данных SQL, где вы сохранили подробную информацию о книгах, такую как автор, цена, публикации, контент, жанр и т. Д. Вы можете создать портал, где студенты, исследователи и преподаватели могут использовать свои удостоверения личности для регистрации книг на определенный период времени, наложения штрафов, если книги не возвращаются в установленные сроки, создание платежного портала, создание другой базы данных для хранения данных профиля пользователей и т. д.
2. Приложение для розничной торговли через Интернет
3. Система бронирования железнодорожных билетов.
Вы можете создать платформу, которая позволяет пользователям бронировать железнодорожные билеты и имеет такие функции, как вход в систему, функция оплаты, отображение списка поездов между пунктами и их расписанием, а также количество доступных мест, маршруты поездов и т. Д.
4. Система управления больницей
Вы можете сотрудничать с клиникой или создать отдельное приложение, которое позволяет пациентам и врачам взаимодействовать и консультироваться друг с другом посредством видеоконференцсвязи, назначать лекарства, оплачивать сборы, управлять приемами, планировать звонки, отображать список лекарств и их информацию и т. Д.
5. Система управления человеческими ресурсами
Вы можете создать другое приложение, которое позволит небольшим компаниям и организациям управлять своими человеческими ресурсами. Он отслеживает их сотрудников и их производительность, такие детали, как шкала заработной платы, отдел, обязанности, сроки, назначенные проекты и другую важную информацию.
Лучшие сертификаты SQL
После того, как вы получите подробное представление о теоретических концепциях, а также о практических концепциях, следующим шагом для вас будет создание портфолио, которое подчеркнет ваши навыки SQL во время собеседований. Вы уже выполнили несколько проектов в SQL, и следующим шагом будет получение аккредитованных и проверяемых сертификатов от официальных поставщиков SQL. Несколько аккредитованных сертификатов SQL:
Вопросы на собеседовании по SQL
После подготовки со всеми теоретическими и практическими концепциями SQL, проектами, сертификатами и т. Д. Пришло время подготовиться к большому дню. Теперь вы можете с уверенностью перейти к следующему и последнему шагу, чтобы начать подготовку к вопросам, связанным с SQL, чтобы успешно пройти собеседование. Когда вы садитесь на собеседование, всегда не забывайте подкреплять все свои теоретические ответы практическими и реальными сценариями.
Вот список самых популярных вопросов на собеседовании по SQL.
Подведение итогов!
Мы надеемся, что с помощью этого подробного руководства вы получите полную и точную дорожную карту для изучения SQL в 2021 году.
SQL для чайников. Реляционные БД. Типы данных
Всем доброго дня, пикабушники и пикабушницы.
Пообщавшись со многими людьми из сферы IT как-то напросилась мысль, что многие хотели бы знать SQL, но либо учебники скучные, то ли нет понимания, с чего начинать.
Оставлю это здесь, может кому-то пригодится.
Для начала, надо разобрать, что же такое SQL, а так же, где, как и зачем применяется.
Считаю справедливым, что нужно дать определение РБД:
Напоминает адресную или телефонную книгу, в которой есть зависимости.
Такая адресная книга называется двухмерной (строка и столбец) таблицей информации.
БД обычно не состоят из одной таблицы, поэтому, мы добавим еще одну:
Ничего не изменилось: так же, набор атрибутов у определенных «лиц».
Если мы захотим найти всю информацию по этим трем людям, мы получим следующее:
Кроме того, первичные ключи гарантируют, что ваши данные имеют определенную целостность.
В SQL типы данных разделяются на три группы: строковые, с плавающей точкой (дробные числа) и целые числа, дата и время.
Типы с плавающей точкой (дробные числа) и целые числа:
Целые числа, дата и время:
Вернемся к определению SQL.
P.S.: если все же полезная инфа, могу написать еще парочку статей о простых запросах Select с условиями Where. Напишите в комментарии.
Лига программистов
384 поста 6.5K подписчика
Правила сообщества
Правило 2. При публиковании поста ставим корректные теги, передающие смысл публикации.
Если б я не знал что такое первичный ключ, то ничего бы не понял.
Если кто-то действительно хочет изучить SQL, рекомендую начать не с постов на пикабу, а с вебинара MS 10774 Гурьянова и Самородова. Курс примерно 2012 года, но всё актуально и на сегодняшний день.
Практиковаться после курсов можно тут: https://www.sql-ex.ru/
Если бы я не знал материал, я бы ничего не понял.
Если бы мне нужно было бы изучить этот материал, я бы полез в книги, ютуб, стаковерфлоу, но не сюда.
Это два моих скромных совета
Упоминаешь «атрибут», а что это такое? Потом напишешь «кортеж» и догадывайтесь сами, что это?
Што? Какой-то непонятный изъёб, дабы придать тексту флёр академичности. Проще будь, ТС, тут тебе не хабр с яйцеголовыми. И да, хватит уже путать понятия данных и информации. Хранилища информации называются базами знаний. А БД в самом своём названии содержит подсказку.
Ты б ещё сопромат сюда притащил!
Раньше странно было наблюдать, почему при автоматизации бизнес процессов заказчики боятся баз данных
Цепляние за эксель у многих происходит до последнего
Вроде бы уже все, можно отпустить и двигаться дальше. Но нет. Давайте лучше эксель
Потом понял, что они даже по своему правы
Эксель для них это последний бастион, где они еще удерживают ситуацию под контролем. Можно залезть ручками в файл, настроить фильтры, поковыряться. Если надо, то что-то подправить в формулах и связях между таблицами
Переход к базе данных это следующий уровень сложности, знаний для контроля над которым просто нет
Тут они уже нутром понимают, что обратной дороги не будет. Придётся зависеть от этих мутных ИТ-шников, с их sql запросами и прочей магией
А база данных это где?
Еще хорошо если на локальном сервере. По крайне мере может покажут стационарный комп с мигающими лампочками. В мозгах может появится успокаивающая ассоциация, что этот ящик и есть база данных. Тогда его можно в охраняемую комнату запереть и спать спокойно.
А если база данных в «облаке»?
В газетах вон постоянно пишут про хакеров и как из облаков данные утекают
Нет, нам такой прогресс не нужен. Лучше эксель
Тут все надежно, проверено мудростью предков, и есть панацея от всех проблем: ctrl+alt+delete
Когда для тебя SQL это не просто буквы
О печальной защите информации в 2017 году
В данном посте я хочу поговорить не про гигантов типа Google, Яндекс или ВК, а про обычные компании с которыми мы работаем или которые не так известны.
Несмотря на кучу законов типа ФЗ-152 уровень защищенности персональных (и не только) данных к сожалению переживает по моим наблюдениям не лучшие свои времена.
К сожалению утечки встречаются почти на каждом шагу, большинство по работе. Я хочу рассказать о найденных мной уязвимостях в 2017 году.
В начале этого года попросили проверить одну Windows программу с целью узнать, что она вообще делает. Программа позиционировала себя как обратная связь клиента с фирмой, своеобразный такой чат.
Вооружившись VirtualBox с установленным внутри WireShark и другими средствами мониторинга начал следить за программой, исследовал формочки приложения. В WireShark промелькнул HTTP-запрос, отправляющий сообщение на сервер. Так же обнаружил и HTTP-запрос, получающий сообщения с сервера. Немного поразбежавшись, обнаруживаем, что никакой авторизации на стороне сервера нет. Получаем сразу 2 уязвимости. Мы можем читать сообщения любого пользователя, включая, что пишут админу, а так же от имени пользователя отправлять сообщения другому пользователю.
На следующую уязвимость в конце зимы или весной в 2017 году я наткнулся совершенно случайно с помощью рекламы в Яндекс-Директе.
Попалась на глаза мне контекстная реклама одной фирмы, которая говорила, что есть филиалы во многих городах РФ. Что-то тогда меня заинтересовало и я открыл их сайт.
Там открыл форму обратной связи.
С удивлением замечаю попадаю на сайт без домена, а только IP-адрес сервера.
Стало любопытно, а что работает на этой машинке? Проверяю порт FTP и… захожу под гостем. Куча всяких файлов, рабочая WEB-папка со страницами сайта. Есть немножко бэкапов. С виду сервер использовался как или помойка или как тестовый сервер.
Открываем файл конфигурации из Web-папки … Видим логин и пароль от FTP-другого сервера.
Проверяем… И попадаем уже во второй сервер…
Там тоже поднят WEB-сервер и вообще файлов намного больше… на 200 гигабайт с лишним. В основном это конечно бэкапы баз, но и очень много рабочих и свежих документов.
Внутри конфига WEB-сервера уже засвечивается и SQL-сервер с логином и паролем, который крутится на этом сервере. И да. На него тоже можно попасть.
Итог: получаем утечку в из крупной фирмы с возможностью исказить/уничтожить информацию и бэкапы баз данных.
Также в этом году для работы потребовалось создать парсер сайта довольно большой бюджетной организации для формирования БД (около миллиона строк в 3 таблицах), что бы уменьшить ручной труд и постоянные запросы к сайту. Сам сайт тоже тот еще тормоз, поэтому создание парсера было логичным решением, что бы получить сразу готовые таблицы и всегда иметь их под рукой.
В голове вместе с алгоритмом парсера и количество срок кода росла также лень всё это делать. Тогда я решил проверить теорию с предыдущим сервером. И.. Вы не поверите! Ситуация практически повторилась! Мы опять попали на FTP сервер, но на этот раз там лежал файл VPNRouter_64.vmdk. Виртуальная машинка.
Немного колдуем над файлом и получаем доступ к разделу виртуального диска внутри машинки.
Самое интересное, это папка OpenVPN с настроенной конфигурацией и сертификатами.
Копируем на свой комп, подключаемся, и… Бинго! Мы внутри защищенной сети.
Смотрим какой нам присвоил сервер виртуальный IP.
Открываем терминал, запускаем nmap сканируем всю подсеть на 80,21,1433 порты.
Есть несколько компьютеров с такими открытыми портами!
И опять нас радостно встречает FTP без пароля на одном из серверов!
А дальше классика. Открываем Web.config, получаем строку подключения к серверу и с помощью dBeaver мы получаем доступ к базе данных внутри сети. Что еще интереснее, данная комбинация подошла и на другие SQL-сервера внутри этой сети. Один пароль на все сервера (всего их было 3-5 серверов, уже не помню). И это довольно крупная бюджетная организация для нашего региона!
Опять же возможность положить сайты, совершить утечку персональных данных (я там себя нашёл), исказить/удалить.
Сами персональные данные мне уже не интересны. Я с ними работаю каждый день, допуск к базе своего региона (ну или большей её части) у меня есть и так.
Еще один случай опять же на работе, опять же в этом году.
Другая бюджетная организация дала VPN (L2TP) доступ и программку которая работает с их сервером, обмен с базой данных.
В таком режиме мы уже работаем давно, но программист написавший программу уже уволился, а неудобства с программой проявляются все сильнее и мысли написать свою программу типа плагина или хотя бы нужные скрипты. И тогда я решил провести один эксперимент, а именно попробовать подключиться не через их прогу, а через редактор БД. Выдергиваю, по какому адресу их программа стучится, вбиваю в редактор БД, и… сервер нас впустил! Ему хватило подключения по VPN и доверительное соединение! Мы опять получаем доступ к серверу ко всем базам, которые там находятся со всеми вытекающими, куда по идее мы не должны были попасть.
Похожая ситуация и в самой корпоративной сети, опять же в этом году.
Дали программу, файл реестра, внутри которого… Логин sa, пароль 111111As…. Доступ из внешки… Ну хоть не на стандартном порту. А на нем так же крутиться персональная информация! Любой админ из корпоративной сети сути может увидеть инфу другого филиала через SQL-редактор, к которой он не должен иметь доступа, а так же изменить/удалить всю БД! А то что изначально дали доступ без защищенного канала еще хуже! Благо щас перевели программу на Vipnet, но пару месяцев назад доступ по внешнему IP еще был, может и до сих пор есть.
Недавно проводил исследование одного Android-приложения (мой предыдущий пост), там такая же плачевная ситуация. Любой школьник может получить доступ к информации без авторизации, слить бюджет на СМС, зафлудить СМС чей нибудь телефон, исказить рейтинг, слить базу данных. Так же существует возможность получить права баристы простым брутом пароля!
Это всё печально дамы и господа. Давайте, мы будем относиться к защите наших серверов/ПК/телефонов более серьезно. Для проникновения внутрь не понадобились никакие эксплоиты, хакерские навыки. Только штатные программы и любознательность.
А сколько подобных серверов с открытым доступом в интернете? А сколько еще таких дырявых приложений в Маркете? Наверно тысячи, десятки тысяч.
Вполне возможно, Вы так же сталкивались с похожими ситуациями, надеюсь без злых намерений.
Многие этим профессионально занимаются, пишут ботов которые ползают по интернету, пробивают стандартные порты, брутят по словарю, ломают роутеры, IP-камеры, увеличивая армию ботов. С такими ботами встречался и я, точнее мой Firewall и было занятно наблюдать как пытались подобрать пароль от моей базы по примерно по 5-10 запросов в секунду.
Так же попадались боты которые пытались ломануть мой FTP и VNC сервер из разных стран.
Обнаружив эти попытки в логах, я убрал компы за NAT и с тех пор я держу все порты закрытыми, оставив только порт для VPN-соединения, а при, необходимости временно доступа другим людям, открываю временно их на нестандартных портах. Для постоянно доступа использую OpenVPN и генерирую сертификаты на каждое устройство.
Итак. Для минимальной безопасности:
1. Не держите FTP сервер с возможностью подключаться анонимусом. Не держите на FTP какую либо инфу, позволяющая скомпрометировать другие сервера. Конечно, если это Web-сервер и через FTP обновляется его содержимое, то дайте ему минимальные права, если его вдруг вскроют.
2. Не используйте простые пароли, которые можно легко сбрутить. Поверьте, боты не спят и рано или поздно могут приняться за ваш сервер, если он виден извне.
3. Используйте защищенное соединение. Если это не предоставляется возможным, вешайте службы на нестандартные порты. Такие порты найти сложнее и сканировать один комп относительно долго. Если есть настроенный Firewall, то вполне может сработать тревога сканирования портов и при их прозвоне ботом, фаервол начнет посылать все попытки подключения бота в лес, а порты ботом так и не будут найдены.
4. Если возможно, старайтесь в Андроид-приложениях шифровать все HTTP-запросы. Например http://127.0.0.1/web?query=vcXGregfds4r5f3r456sdr32vdf-6t и ответ получать примерно такой же. Через снифер уже не будет видна какая-либо зависимость от запросов и большинство любителей это уже может остановить. В идеале еще прикрутить защищенное соединение, но многих останавливает, что SSL-сертификаты платные. Можно еще использовать сокеты.
5. Не оставляйте в приложениях права админа, например в веб-приложениях, десктопных. Старайтесь давать минимальные права приложениям. Фукнции авторизации желательно вешать на сервер, а дальше посылать только ID-сессии, а не UserID. При обмене данными всегда проверять авторизована ли машина или нет. Особенно это касается Web- и Android-приложении.
6. Периодически проверяйте логи приложений, а так же лог фаервола.
7. Сервера желательно прятать за NAT, а в некоторых случаях (например, если это сервер с персональными данными или где проводятся финансовые операции) за двойной NAT.
8. Ну про своевременную установку патчей и обновлений, я думаю не стоит объяснять.
9. Ну и конечно следите за новостями о вирусных угрозах, эпидемиях, новых шифровальщиках
Желаю всем в следующем году стабильных линков, отсутствие зловредов и хороших клиентов. Сделаем наши сервера, базы данных и приложения более защищенными.














