Ответ 1
Можем ли мы сказать, что сайт может быть полностью безопасным от атак хакеров?
Нет. Во-первых, даже самые безопасные технологии в мире уязвимы для социальных инсталляций.
мы знаем, что каждый исполняемый файл может быть реконструирован (разобран, декомпилирован). Нет матери, насколько сильная безопасность вы будете реализовывать, так или иначе, если крекеры хотят, они делают трещины!!! Только это вопрос времени.
Как насчет веб-сайтов? Можем ли мы сказать, что сайт может быть полностью защищен от атак хакеров (мы предполагаем, что хостинг не уязвим)? Если нет, то почему?
Можем ли мы сказать, что сайт может быть полностью безопасным от атак хакеров?
Нет. Во-первых, даже самые безопасные технологии в мире уязвимы для социальных инсталляций.
Да, это всегда можно сделать. Всегда есть способ.
Он, как мой дедушка, всегда говорил:
Замки предназначены для поддержания честности люди вне
Вы можете легко написать webapp, математически доказано, что он защищен... Но это доказательство будет выполняться только до тех пор, пока основная операционная система, интерпретатор и компилятор будут защищены, что никогда не будет.
Главное, чтобы помнить, что веб-сайты обычно являются частью огромной и сложной системы, и на самом деле не имеет значения, входит ли хакер в систему через веб-приложение или какую-либо другую часть всей инфраструктуры. Если кто-то может получить доступ к вашим серверам, маршрутизаторам, DNS или тому подобное, они могут снизить даже лучшее веб-приложение. По моему опыту многие системы в той или иной степени уязвимы. Таким образом, "полностью безопасный" означает либо "мы очень стараемся обеспечить платформу", либо "мы не имеем никакого представления, но мы надеемся, что все будет в порядке". Я видел и то, и другое.
Подводя итог и добавьте к предыдущим сообщениям:
Я бы сказал, что веб-сайты просто изменяют характер проблемы безопасности из-за проблем клиентского кода. Разработчику не нужно беспокоиться о репликации кода, но разработчик должен знать о рисках, возникающих при централизации данных и доступе к серверу (или коллекции серверов). Это просто другая проблема.
Сайты сильно страдают от injection и межсайтовый скриптинг атак
Межсайтовый скриптинг, выполняемый на веб-сайтов было примерно 80% всех задокументированные уязвимости безопасности, как 2007 г.
Также часть веб-сайта (на некоторых веб-сайтах очень много) отправляется клиенту в виде CSS, HTML и javascript, который открыт для проверки кем-либо.
Не использовать nitpick, но ваше определение "хорошего хостинга" не предполагает, что HTTP-сервис, запущенный на хосте, полностью свободен от эксплойтов.
Популярные веб-серверы, такие как IIS и Apache, часто исправляются, чтобы защитить от таких эксплойтов, которые часто обнаруживаются таким же образом, как обнаружены эксплойты в локальных исполняемых файлах.
Например, неверный HTTP-запрос может вызвать переполнение буфера на сервере, что приведет к выполнению части выполняемых данных.
Невозможно сделать что-либо на 100% безопасным.
Все, что можно сделать, - это сделать что-то достаточно сложное, чтобы ворваться в то, что время и усилия, потраченные на это, не делают этого.
Можно ли взломать ваш сайт? Конечно, я просто нанял несколько террористов-смертников, чтобы взорвать ваши серверы. Или... Я взорву те электростанции, которые активируют ваш сайт, или я делаю какую-то социальную инженерию, и атаки DDOS, скорее всего, будут эффективными в больших масштабах, не говоря уже о атомных бомбах...
Короткий ответ: да.
Возможно, это неправильный сайт, чтобы обсудить это. Однако широко известно, что безопасность и удобство использования обратно пропорциональны. См. Этот post от Брюса Шнайера (что относится к другому сайту, но в блоге Schneier есть много интересных чтений по этому вопросу).
Предполагая, что сам сервер не является составной частью и не имеет других клиентов, которые используют его, статический код должен быть точным. Вещи обычно только начинают напугаться, когда есть какой-то язык сценариев. В конце концов, я никогда не видел прилагаемого "Это работает!". страница
Говорить "полностью безопасно" - это плохо, поскольку он будет указывать две вещи:
Поэтому вместо того, чтобы пытаться достичь "полной безопасности", вы должны:
Не говоря уже о том, что вы должны добиться баланса между простотой использования и безопасностью, большую часть времени, и решить, что обеспечивает оптимальный уровень как для ваших целей.
Отличным примером является пароли. Легкий способ сделать это - просто иметь его, использовать его повсюду и сделать его легко запоминающимся. Безопасный способ сделать это состоит в том, чтобы случайно сформировать последовательность символов переменной длины по спектру кодирования, который знает только сам пользователь.
Естественно, если вы заходите слишком далеко на стороне, пользовательские данные легко отбирать. Однако, если вы заходите слишком далеко на сторону безопасности, практическое приложение может привести к ситуациям, которые скомпрометируют добавленную стоимость мер безопасности (например, люди не могут запомнить всю цепочку ключей паролей и соответствующих имен пользователей и, следовательно, писать все они где-то внизу. Если список скомпрометирован, меры безопасности, которые были введены в действие, ни к чему не приводят. Следовательно, большую часть времени ударяют баланс, и спрашивают, что вы ввели номер в свой пароль и не говорите сделайте что-нибудь глупое, как рассказать об этом другим людям.
Даже если вы удалите возможность злонамеренного человека с ключами ко всему, что утечка данных из уравнения, глупость человека бесконечна. Нет такой вещи, как 100% -ная безопасность.
Можно ли сказать, что сайт может быть полностью безопасным от атак хакеров (мы предполагаем, что хостинг не уязвим)?
Хорошо, если мы собираемся начать устанавливать ограничения на злоумышленника, тогда, конечно, мы можем разработать полностью безопасную систему: нам просто нужно отключить все атаки атакующего от сценария.
Если предположить, что злоумышленник действительно хочет попасть (и не связан правилами вашего взаимодействия), тогда ответ просто нет, вы не можете быть полностью в безопасности от атак.
Да, возможно, чтобы сайт был полностью безопасным, для разумного определения "полного", которое включает в себя ваше первоначальное предположение о том, что хостинг не уязвим. Проблема такая же, как с любым программным обеспечением, которое содержит дефекты; люди создают программное обеспечение сложности, которая немного превосходит их возможности управления, и, следовательно, недостатки остаются незамеченными до тех пор, пока они не станут слишком поздно.
Вы можете начать меньше и доказать свою работу правильно и безопасно по мере ее создания, переделывая любые готовые компоненты, которые не были разработаны с такой высокой степенью качества, но, к сожалению, это оставляет вас в массовом коммерческом недостаток по сравнению с людьми, которые могут писать 99% безопасного программного обеспечения в 1% случаев. Поэтому редко существует хорошая причина для продвижения по этому пути.
Ответ на этот вопрос близок к идеям о вычислительной теории, которые возникают из рассмотрения проблемы остановки. http://en.wikipedia.org/wiki/Halting_problem В этом случае, если бы вы могли с ясностью сказать, что вы разработали способ программно определить, была ли какая-либо конкретная программа безопасной, близко к опровержению неразрешимости проблемы с остановкой в классе машин, с которыми вы работали. Так как проблема неразрешимости проблемы остановки была доказана, мы можем знать, что над машинами для обучения вам не удастся доказать надежность, поскольку проблема безопасности сводится к проблеме остановки. Даже для конечных машин вы могли бы решить все состояния программы, но Минск сказал бы нам, что время, необходимое для полного дерева состояний для даже упрощенных современных компьютеров и веб-серверов, будет огромным. Вы, вероятно, знаете много о конкретной части кода, но как только вы изменили код или обновили его, потребуется полный повторный тест. По сути, это интересно, потому что все это сводится к понятию информации и смысла. Читайте об автоматизированной теории, чтобы лучше понять пределы вычислительных систем. http://en.wikipedia.org/wiki/Automated_theorem_proving
Дело в том, что хакеры всегда на шаг впереди разработчиков, вы никогда не сможете считать сайт пуленепробиваемым и на 100% безопасным. Вы просто избегаете вредоносных вещей, сколько сможете! Фактически, вы должны следовать за "белым" подходом, а не к черному списку, когда речь идет о безопасности.