Безопасность веб-сайта: как учиться?

Мне любопытно (для чисто академических целей), как могут быть сорваны ценные бумаги веб-сайта.

  • Что, в общем, это безопасность в Интернете? Сервер и клиентская сторона?
  • Как определить, уязвим ли сайт? Как предотвратить уязвимости?
  • Как сбросить ошибки сервера? Можно ли отключить/отключить сервер?

Итак, в сводке я спрашиваю об общей безопасности в Интернете, о том, как "взломать" и как предотвратить. Не могли бы вы посоветовать мне некоторые ресурсы? И есть ли у вас какие-либо указатели (либо из опыта, либо из личного мнения)?

Кроме того, если я хакер: какой самый быстрый способ удалить сайт?

Ответы

Ответ 1

Вместо того, чтобы пытаться всесторонне ответить на ваши вопросы на одной странице, я бы предпочел передать вам некоторые выдающиеся бесплатные рекомендации.

  • Что, в общем, это безопасность в Интернете? Сервер и клиентская сторона?
  • Как определить, уязвим ли сайт? Как предотвратить уязвимости?

Если вас особенно интересует веб-безопасность, я настоятельно рекомендую OWASP (проект Open Web Application Security Project). OWASP - это консорциум, который фокусируется исключительно на веб-безопасности для разработки и тестирования. http://www.owasp.org/index.php/Getting_Started

Помимо этого, есть несколько хороших книг по этому вопросу. Большинство экспертов полагаются на тестирование проникновения или "этический взлом", чтобы выявить уязвимость сайта. Это занимает много времени и опыта. Хотя есть несколько быстрых тестов, которые можно выполнить, комплексные усилия требуют значительных усилий по тестированию.

  • Как сбросить ошибки сервера? Можно ли отключить/отключить сервер?

Большинство тестов на проникновение вызывают ошибки сервера. Выключение сервера, получение административных учетных данных (а затем выключение сервера изнутри) или нарушение работы пользователей является обычным явлением.

Предотвращение слабых мест безопасности требует немного другого набора навыков. Оборонительный дизайн и кодирование - предмет, который также хорошо обсуждается в книгах и OWASP.

Итак, суммируя, я спрашиваю о общая веб-безопасность, как "взломать" и как предотвратить. Не могли бы вы мне к некоторым ресурсам? И у вас есть указатели (либо из опыта, либо из личное мнение)!?

Кроме того, если я хакер: что самый быстрый способ снять сайт?

Microsoft предлагает этот защитный совет по программированию: http://msdn.microsoft.com/en-us/library/aa302420.aspx

Я частично отношусь к этой книге как практическое руководство по тестированию веб-безопасности: http://www.amazon.com/Web-Security-Testing-Cookbook-Systematic/dp/0596514832

Ответ 2

Кроме того, если я хакер: какой самый быстрый способ удалить сайт?

Ответ: Google. Имейте в виду, что удаление любого веб-сайта на несколько порядков проще, чем удаление определенного сайта. Большинство атак выполняется небольшим количеством хакеров, атакующих БОЛЬШИЕ числа серверов, и хакеру не важно, во что он ворвался, а скорее, что хакер разбивается на один или несколько. Есть сайты, которые уже были взломаны. Хакер установил бэкдор, подобный c99shell.php, Google может индексировать эти бэкдоры, а затем люди могут их искать.

Другой подход к взлому Google - найти все копии уязвимого программного обеспечения. Предположим, что exploit попадает в Интернет, что влияет на vBulletin 3.8.4 и ниже. Я могу выполнить поиск по Google "Работает на vBulletin® версии 3.8.4" и найти почти все копии этой версии vBulletin в Интернете.

Итак, чтобы ответить на ваш вопрос: Код Exploit используется для взлома веб-сайтов, и хакеры находят вас с помощью Google.

Многие из этих эксплойтов веб-приложений используют уязвимости, обнаруженные с помощью инструментов тестирования, свободных и с открытым исходным кодом, таких как Wapiti, w3af или, возможно, дорогой коммерческий продукт Acunetix.

Ответ 3

Посмотрите этот отличный учебник по безопасности. Обратите внимание, что это с точки зрения PHP, но основная идея должна быть одинаковой для всех проблем с веб-безопасностью.

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

Acunetix Web Security Scanner

Ответ 5

Вот некоторые материалы для безопасности веб-сайта, в особенности для начинающих и Advance Web Developer.


       #15 Steps To Secure Your Website

1: Предотвращение хотлинкинга изображений (IMP)

Image hotlinking - это процесс использования URL-адреса elses Image на нашем веб-сайте и использования их пропускной способности. Чтобы предотвратить эту тайну, мы можем предотвратить доступ для внешнего сервера, добавив следующую строку в код.

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

2: Предотвращение подделок CSRF (Cross Site Request Forgery)

Чтобы предотвратить атаки CSRF на ваши запросы GET и POST для отправки формы, вы можете использовать следующие 2 метода.
Во-первых, он включает случайный токен с каждым запросом, это уникальная строка, которая создается для каждого сеанса.
Второй метод - использовать случайное имя для каждого поля формы.

3: Запретить доступ к каталогам/Отключить индексирование

Добавьте следующую строку в ваш файл .htaccess.

Options -Indexes

4: Защитите свой приватный и CMS-вход с ограничениями IP

Ограничение IP - это немного продвинутый, но эффективный метод, чтобы остановить несанкционированного доступа к определенной области вашего веб-сайта. Ниже приведен пример кода htaccess для IP, который ограничивает доступ к определенному местоположению.

ALLOW USER BY IP
<Limit GET POST>
order deny,allow
deny from all
allow from 1.2.3.4
</Limit>

5: Защитите свой .htaccess файл

Вы можете написать этот ниже фрагмент кода в файле htaccess, который не позволяет другим пользователям обращаться к вашему файлу htaccess.

<Files ~ "^.*.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

6: Правило доступа к функциям

Добавляя "_" в качестве префикса для имени функции, мы можем запретить функцию, вызываемую из Web публично. Это наилучшая практика, когда нам нужна какая-то конкретная функция, доступ к которой осуществляется только через AJAX.

7: заблокируйте права доступа к каталогу и файлам

Разрешения для файлов определяют, кто может делать что делать с файлом.
"Чтение" = 4: просмотр содержимого файла.
"Write" = 2: изменить содержимое файла.
"Выполнить" = 1: Запустить файл программы или script.

8: Запретить запуск задания Cron из веб-браузера

Добавив следующую строку кода на своей странице, вы можете защитить свою страницу от доступа к веб-браузеру.

if( ! $this->input->is_cli_request() ) {
            die("Only CLI Requests Allowed");
}

9: Скрыть страницы администратора, которые будут сканировать Google

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

10: Отключить право Нажмите на страницу, если не требуется

Отключение "правого щелчка" в качестве способа просмотра исходного кода вашего веб-сайта с помощью элемента проверки для защиты содержимого веб-сайта для обычных пользователей.

11: используйте Сильный пароль для CMS

Храните практику, чтобы установить случайный пароль только с особым символом.

12: Сделать каталог администратора жестким, чтобы угадать

Может случиться так, что хакеры могут использовать скрипты, которые сканируют все каталоги на вашем веб-сервере для имен раздачи, таких как "admin" или "login" и т.д., и ваши существенные вещи могут просочиться.

13: Измените префикс таблицы базы данных

Добавьте префикс (смесь названия проекта и года), который трудно предположить для защищенной стороны.
Чтобы проиллюстрировать,
A) BPM Supreme = > bpm14_download
B) Glickin = > gk15_admin
C) TravelWorthy = > tw16_user

14: Предотвратите пароль пользователя, который так же важен, как ваш

Что касается алгоритма шифрования паролей, используйте алгоритм sha1 вместо традиционного алгоритма Md5, который является самым старым способом и становится менее безопасным в наши дни в соответствии с источниками. Ссылка: http://php.net/manual/en/function.sha1.php

15: Скрыть журнал ошибок

В режиме разработки сохраняйте сообщение об ошибках "ALL", и как только мы перейдем в LIVE, измените его на "0", не забывая. Здесь

Ссылка: http://php.net/manual/en/function.error-reporting.php

Ответ 6

В широком смысле веб-безопасность охватывает не только программную технологию, но и другие области, такие как физическое местоположение вашего веб-сервера, независимо от того, предоставляются ли разрешенные авторизованные пользователи для физического доступа полностью к программному обеспечению который запускает сервер, например, операционную систему, веб-технологию, например, PHP, Apache, Javascript и т.д. Вам придется хотя бы немного знать все эти языки/программное обеспечение, чтобы серьезно поговорить о безопасности в Интернете. Кроме того, не все веб-серверы используют PHP, некоторые используют Perl, python, а другие запускают Ruby, Java и т.д. Как предотвратить уязвимости? Если вы понимаете отверстия в петле программирования на языке, который используете, и приложите все усилия для выполнения проверок здравомыслия, обновите исправления операционной системы, сделайте правильный контроль доступа с точки зрения физической безопасности и т.д., Вы можете сказать, что выиграно более половины битвы. Остальные будут проявлять должную осмотрительность, рассказывать и воспитывать людей о безопасности и ее важности.

Ответ 7

Об этом написана широкая тема и целые книги.

Веб-сервер по определению должен отвечать HTTP-запросам (TCP-соединения через порт 80). Он также может отвечать на запросы HTTP/SSL (TCP-соединения через порт 443). Конечно, можно запускать эти службы по другим портам; но общедоступные веб-серверы почти все настроены в соответствии с этими стандартами.

Итак, какие виды проблем безопасности вы можете себе представить? Как правило, они могут быть уязвимыми в коде веб-сервера (демона) (например, Apache), в любом из модулей, загружаемых им (например, mod_php), в некоторых из динамических обработок содержимого (сценарии CGI, выполняемые веб-сервером, Java, движки приложений и т.д.) или что-то еще, что работает на сервере (демоны SSH, агенты управления SNMP и т.д.).

Кроме того, некоторые проблемы могут быть за пределами вашего собственного сервера. Например, если вы обрабатываете данные, предоставляемые пользователями, существует риск того, что любой маршрутизатор или связь между вашими пользователями и вашим сервером могут отслеживать личные или конфиденциальные данные. Даже если вы обрабатываете эти SSL, у вас могут возникнуть проблемы с перенаправлением пользователей на другие сайты и их обманывание для предоставления этих данных этому "MITM" (человек в середине). Также любой контент, предоставляемый пользователями и отображаемый другим пользователям (комментарии в вики, блоги, форумы обмена сообщениями и т.д.), Может быть уязвим для различных "межсайтовых скриптов" (XSS). Злоумышленник может внедрять фиктивные записи на различные DNS-серверы, на которые пользователи полагаются на них на ваш сайт (например, отравление кэша DNS).

Реально, большинство современных проблем, которые находятся под вашим контролем, связаны с XSS или SQL-инъекцией (случаи, когда ваш динамический контент неявно хранит и извлекает данные из СУБД, например MySQL, и где любая из ваших попыток для дезинфекции пользовательских входов неадекватны... где пользовательские данные передаются в СУБД как код SQL и выполняются там).

Это те проблемы, которые имеют отношение к программистам. Большинство проблем с ОС, серверное программное обеспечение и т.д. Представляют больший интерес для системных администраторов.

Ответ 8

Этот бесплатный видеокурс от безопасности Трой Хант - отличное место для начала. В нем рассказывается о пяти основных угрозах безопасности в Интернете (в соответствии с OWASP) и изучается механика каждой уязвимости (XSS, SQL-инъекция и т.д.) И рассказывается об защитных мерах:

Видеокурс Основы безопасности Web