По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет, сегодня расскажем что такое база данных и SQL. У современных баз данных куча нюансов - погнали разбираться. Представь - собираешь ты деньги на подарок корешу, и записываешь на бумажке, кто сколько скинул. Табличка с денежками организована, разделена по именам и сумме долга, и имеет удобную структуру - ну вот оно, это и есть база данных! Ага, теперь, перемещаемся в цифровое пространство и заводим целый эксель файл для этого дела. Стало удобнее, можно редактировать, сортировать и даже данные удалять! Круто! Но достаточно ли этого для роста этой базы данных? Нет. Со временем данных становится так много, что админам приходится связывать их друг с другом, а тут одним эксель файлом уже не обойтись. Представим, решили вы сделать свой аналог ютуба, как будете хранить инфу о пользователях? Список юзеров, там, каналы, кто на что подписан, лайки и вот это все. Сложить это все в одну таблицу? Будет неудобно и медленно работать. Очевидно, надо разделить сущности на несколько таблиц - юзеры, каналы и видосы: Теперь свяжем данные между собой и добавим информацию о том, кто создал канал, и на каком канале залили видео. Ага, получились связанные таблицы. Связанные, от слова связь. А связь, это по-английски relation. А в айти тусовке они так и называются - реляционные базы данных, и это один самых распространенных типов баз данных. Еще есть нереляционные базы данных, о них подробнее можно прочитать в этой статье про NoSQL. Уф, ну теперь с данными стало гораздо удобнее работать, и мы избежали большой таблицы с повторяющимися строчками, разбив все на несколько табличек. Такой процесс еще называется нормализацией, когда мы избавляемся от избыточных данных. Ну и как раз для этого мы ввели в каждой таблице специальное поле - ID, которое идентифицирует каждую запись. Этот айди называется Primary Key, он же “первичный ключ”. А в таблице которая будет на него ссылаться, он будет называться Foreign Key, или по-русски “внешний ключ”. Нырнем в детали и поговорим про типы связей между таблицами. Первый тип называется “Один-ко-многим” или “многие-к-одному” (One-to-Many или Many-to-One). В нашем примере, у каждого видео может быть только один канал, где оно выложено, но на одном канале может быть много видео, поэтому в двух последних строках ID канала у нас повторяется, верно? Отношения «один-ко-многим» также можно рассматривать как отношения «многие-к-одному», в зависимости от того, с какой стороны вы на это смотрите. Второй тип связей называется “один-к-одному” (One-to-One) - классические табличные отношения. Вообще, это редко используемый тип связи, обычно его делают для безопасности. Это как если на нашем аналоге ютуба, мы разрешили бы создавать только один канал одному пользователю и в таблице с каналами ID создателя не могло повторяться. Такое себе, согласен? В таком случае вообще можно было бы обойтись и одной таблицей. Ну и третий тип связей, это “многие ко многим” (Many-to-many). Это когда у нас появляется промежуточная таблица связей, которая как бы соединяет два отношения “один ко многим”, которые мы обсудили в начале разбора типов связей. Давайте сделаем таблицу с лайками балалайками, где будем хранить ID пользователей и ID видео, к которым они поставили лайк: А вот так они связан: каждый пользователь может поставить лайк каждому видео. Теперь вопрос - а где все это хранить? Не в экселе же. И тут на сцену выходит термин СУБД, она же система управления базами данных - это программа, которая позволяет создавать, редактировать и администрировать реляционную базу. Ну и для управления всей этой петрушкой используется язык структурированных запросов, SQL (Structured Query Language) эскюэль или сиквел, как иногда его называют за рубежом. Он очень простой и понятный, вот смотри - чтобы найти названия всех видео с одного канала, нам нужно выполнить следующий запрос: SELECT name FROM videos WHERE channel_id = 201 То есть мы буквально говорим: выбери (SELECT) имена из (FROM) таблицы видео, где (WHERE) айдишник (ID) канала равен 201. Если вы хотите взять данные из нескольких таблиц и объединить результат, то нужно использовать в запрос параметр JOIN (от английского соединить). Вот такая упрощающая жизнь админам аналогия с разговорным языком. Так, SQL конечно позволяет добавлять, удалять и изменять данные и сами таблицы. Но важно не забывать про схему базы данных (Database schema), которая служит для описания структуры таблицы, ее полей и ограничений. Прикол в том, что если вам потребуется добавить или убрать столбец в таблице, то это изменение коснется вообще всех данных в таблице, таким образом если мы добавляем новый столбец, то он теперь будет присутствовать в каждой строке. Окей, а для чего вообще нужны ограничения? Для целостности твоих данных. Помнишь мы рассказали про первичный и внешний ключ? Так вот, благодаря им мы можем удостовериться, что в таблицу не попадет запись, которая ссылается на несуществующий айдишник. Или различные ограничения полей, которые не дадут записать дублирующие или пустые данные в нашу базу (Not NULL и Unique). И еще: транзакции. Эта штука, которая позволяет как бы склеить несколько SQL запросов в один. Ну вот представь такую задачку: вставить данные в первую таблицу, а во второй указать ID вставленной записи. Если ты делаешь это без использования транзакций, а во время второго этапа у тебя отвалится интернет, то первая запись попадет в базу, а вторая нет. Ага, появляется интернет, и ты с улыбкой на лице идешь снова выполнить эти запросы, только на этот раз получишь ошибку, что такая запись уже есть, ибо первая то уже в базе! А в случае использования транзакций, при получении ошибки, мы откатимся до того момента, который был до начала транзакции. А еще все эти радости помогают реляционным БД (базам данных) соответствовать так называемым требованиям ACID, которые нужны для сохранности данных - это очень важно в банковской отрасли, или любой другой, где целостность и сохранность данных супер важны. Давай разберемся с аббревиатурой: Atomicity — атомарность, или же проще говоря, непрерывность: это как раз про транзакции, которые мы обсудили только что. Либо операция выполняется целиком, либо никак. Consistency — согласованность: данные, записываемые в таблицу должны соответствовать всем выставленным правилам и ограничениям, помнишь, мы говорили про первичный и внешний ключи, а также про уникальность? Isolation — изолированность: если вы гоняете тонну транзакций одновременно, они не должны пересекаться и влиять друг на друга. Это очень важно для высоконагруженных баз Durability — надежность: если мы получили подтверждение, что транзакция выполнена, то значит наши данные в сохранности, даже если после этого произошел сбой. Ну и в качестве примеров таких баз данных назовем: Microsoft SQL Server, Oracle Database, MySQL, MariaDB и PostgreSQL.
img
Port Forwarding – или проброс портов, который также иногда называемый перенаправлением портов или туннелированием – это процесс пересылки трафика, адресованного конкретному сетевому порту с одного сетевого узла на другой. Этот метод позволяет внешнему пользователю достичь порта на частном IPv4-адресе (внутри локальной сети) извне, через маршрутизатор с поддержкой NAT. Обычно peer-to-peer (p2p) программы и операции обмена файлами, такие как веб-сервер и FTP, требуют, чтобы порты маршрутизаторов были перенаправлены или открыты, чтобы позволить этим приложениям работать. Поскольку NAT скрывает внутренние адреса, p2p работает только в ситуации где соединение идет изнутри наружу, где NAT может сопоставлять исходящие запросы с входящими ответами. Проблема в том, что NAT не разрешает запросы, инициированные извне, но эту ситуацию можно решить с помощью перенаправления портов. Проброс портов может быть настроен для определенных портов, которые могут быть перенаправлены внутренним хостам. Напомним, что программные приложения в интернете взаимодействуют с пользовательскими портами, которые должны быть открыты или доступны для этих приложений. В различных приложениях используются разные порты. Например, HTTP работает через well-known порт 80. Когда кто-то набирает адрес wiki.merionet.ru то браузер отображает главную страницу нашей базы знаний. Обратите внимание, что им не нужно указывать номер порта HTTP для запроса страницы, потому что приложение принимает порт 80. Если требуется другой номер порта, его можно добавить к URL-адресу, разделенному двоеточием (:). Например, если веб-сервер слушает порт 8080, пользователь вводит http://www.example.com:8080. Проброс портов позволяет пользователям в интернете получать доступ к внутренним серверам с помощью адреса порта WAN маршрутизатора и соответствующего номера внешнего порта. Внутренние серверы обычно конфигурируются с частными адресами IPv4 и когда запрос отправляется на адрес порта WAN через Интернет, маршрутизатор перенаправляет запрос на соответствующий сервер в локальной сети. По соображениям безопасности широкополосные маршрутизаторы по умолчанию не разрешают перенаправление любого внешнего сетевого запроса на внутренний хост. Пример с ”домашним” роутером На схеме показан пример, когда проброс портов выполнятся при помощи домашнего SOHO (small office/home office) роутера. Переадресация портов может быть включена для приложений при помощи указания внутреннего локального адреса. Пользователь в интернете вводит адрес //wiki.merionet.ru, который соответствует внешнему адресу 212.193.249.136 и пакет попадает на маршрутизатор, который перенаправляет HTTP-запрос на внутренний веб-сервер по адресу IPv4 192.168.1.10, используя номер порта по умолчанию 80. Можно указать порт, отличный от порта 80 по умолчанию. Тем не менее, внешний пользователь должен знать конкретный номер порта для использования. Подход, используемый для настройки перенаправления портов, зависит от марки и модели маршрутизатора. Настройка проброса порта Реализация перенаправления (проброса) портов с помощью команд IOS аналогична командам, используемым для настройки статического NAT. Переадресация портов - это, по существу, статическая трансляция NAT с указанным номером TCP или UDP-порта. В общем виде основная команда выглядит так: ip nat inside source {static{tcp | udp local-ip local-port global-ip global-port} [extendable] где: tcp или udp – указывает это tcp или udp порт; local-ip – это ip адрес присвоенный хосту внутри сети; local-port – устанавливает локальный tcp/udp порт в диапазоне от 1 до 65535. Это номер порта, который слушает сервер; global-ip – это уникальный глобальный IP адрес внутреннего хоста, по которому клиенты в интернете будут связываться с ним; global-port – устанавливает глобальный tcp/udp порт в диапазоне от 1 до 65535. Это номер порта снаружи, по которому будут связываться клиенты; extendable – эта опция применяется автоматически. Она разрешает пользователю настраивать двойственные статические трансляции, если они идут на один и тот же адрес; Пример настройки: Router(config)#Ip nat inside source static tcp 192.168.1.10 80 212.193.249.136:8080 Router(config)# interface serial0/0/0 Router(config-if)# ip nat outside Router(config)# interface serial0/0/1 Router(config-if)# ip nat inside Показана настройка для данной схемы, где 192.168.1.10 - внутренний локальный адрес IPv4 веб-сервера, прослушивающий порт 80. Пользователи получат доступ к этому внутреннему веб-серверу, используя глобальный IP-адрес 212.193.249.136:, глобальный уникальный публичный IPv4-адрес. В этом случае это адрес интерфейса Serial 0/0/1. Глобальный порт настроен как 8080. Это будет порт назначения, вместе с глобальным адресом 212.193.249.136 для доступа к внутреннему веб-серверу. Как и другие типы NAT, перенаправление портов требует конфигурации как внутренних, так и внешних NAT-интерфейсов. Подобно статическому NAT, команда show ip nat translations может использоваться для проверки переадресации портов. Router# show ip nat translations Pro Inside Global Inside Local Outside local Outside global tcp 212.193.249.136:8080 192.168.1.10:80 212.193.249.17:46088 212.193.249.17:46088 tcp 212.193.249.136:8080 192.168.1.10:80 --- ---
img
Мы категорически против нарушения закона и поиска пользовательских данных в противоправных целях. Статья направлена только на обзор подобных способов и создана для предупреждения пользователей сети, а не освещение способа доступа к пользовательским данным. Рекомендуем использовать данные методы только для решения задач в рамках действующего законодательства. Вы можете об этом не задумываться, но Google хранит в себе все данные, которые пользователи оставляют в сети. С помощью поисковика можно найти даже самую конфиденциальную информацию о каждом пользователе. Это могут номера кредиток, адрес, личный номер телефона и т.д. Для этого не нужно быть хакером, нужно просто знать, как эффективно пользоваться поиском в Интернете. В этой статье мы разберемся, как превратить обычный поисковик Google в средство для получения информации которой нет в открытом доступе. С помощью полученных знаний, Вы сможете начать использовать поисковик с большей эффективностью. Как правильно искать необходимую информацию в Google? Конфиденциальная информация о пользователях регулярно собирается и хранится в поисковой системе Google. Однако, к таким данным не ведут ссылки и просто так их не найти. Это как ключ, спрятанный под ковриком. Для того, чтобы найти спрятанные данные, нужно знать, с помощью каких инструментов можно получить такого рода информацию. Для поиска скрытой информации в Google необходимо использовать специальные операторы, которые помогут вытащить наружу необходимые Вам данные. При помощи таких операторов можно найти много интересного - от номеров банковских карт до секретных документов ФБР. Зачастую, злоумышленники прибегают именно к этим способам. Операторы, которые можно использовать для поиска конфиденциальных данных Ниже мы рассмотрим основные операторы, которые можно использовать для поиска секретных данных в Google. Поиск файлов Задать ограничение по поиску файлов конкретного типа можно при помощи операторов: filetype и ext. Оператор filetype определяет формат по заголовку файла, а ext расширение файла, вне зависимости от содержимого файла. В связи с изменениями алгоритмов работы поисковой системы Google, эти два оператора часто дают один и тот же результат во время поиска. Фильтрация поисковой выдачи Оператор site применяется для установки границ поиска по домену или сайту. А найти скрытые от посторонних глаз служебные данные и метаданные, помогут следующие операторы: allinurl покажет в адресе сайта указанный поисковый запрос; allinanchor этот оператор покажет сайты, в описании которых имеются ключевые слова; allintitle показывает в выдаче сайты, у которых в теге title; прописаны слова и фразы из запроса пользователя; allintext при использовании данного оператора, поисковая выдача формируется на основании содержимого страниц сайта. Операторы можно также использовать в упрощенном варианте без использования приставки all;. Например, оператор allinurl найдет адреса сайтов со всеми перечисленными словами в запросе, а оператор inurl только с первым словом. При правильном использовании вышеперечисленных операторов, можно получить данные кредитных карт, список с именами сотрудников NASA и даже взломать; серверы Пентагона, чем зачастую и пользуются злоумышленники. Для совершения этих действий совсем не обязательно быть продвинутым хакером. Достаточно будет изучить несколько операторов для поиска и немного попрактиковаться. В умелых руках операторы для поиска могут превратиться в мощный инструмент для добычи абсолютно любой информации в сети.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59