Привет мастера. У меня есть несколько вопросов по поводу защиты сайта. Я до конца не понимаю, что такое "дыры", "баги", "уязвимости". Примерно понимаю что и как, но что-то мне кажется что моё понимание далеко от истинного его значения) Как я понимаю, дыры в скрипте и уязвимости, это одно и то же. Это в основном - нефильтрованные данные, вызов скриптов "изнутри" моего сайта и тд Баги - это ошибки логики скрипта (возможность удалять данные, не имея нужного уровня доступа - администратор, накрутка каких-то показателей) Если я не прав, то поправьте пожалуйста) Но это вторая тема, которая меня беспокоит. Главный повод создания темы, это узнать, правильно ли я пишу код, а точнее безопасно, и без уязвимостей. Я фильтрую все данные, которые выводятся, числа пропускаю через функцию intval при добавлении в бд использую real_escape_string при загрузке файлов от пользователей, изменяю их имя отключая выполнение скриптов в директории файлов при каждом запросе пользователя, проверяю его значение cookie И вот всё равно, часто вижу темы о взломах сайтов, и мне становится не по себе. Страшно, что я чего-то не знаю, и страшно, что моя работа, над которой так потеешь просто уйдёт в руки какому-то нечестному человеку. И вот хотелось попросить у вас ссылку на статью, где описаны основные виды уязвимостей, хочу сейчас сделать уклон на повышение безопасности скрипта. А хотя, я думаю там одной статьи будет мало, там наверно целую книгу нужно Всё это затевается ради реализации автоматического вывода вебмани с моего сайта. Тут и за слитый скрипт было бы обидно и за слив денег с моего кошелька. Простите, что так много текста, но надеюсь, что вы дочитали до конца, спасибо
Баг это ошибка алгоритма в целом. Выходные данные не соответствуют ожиданию. Лечится юнит-тестами. Дыра/Уязвимость - баг, позволяющий провести атаку на алгоритм, и поиметь несанкционированный функционал. Защищаться от багов и уязвимостей нужно нормальной головой - знаниями алгоритмизации в целом, и стеком технологий, с которыми работаешь в частности. По сути, самые популярные баги/уязвимости - это инъекции. Откуда они растут? Прально, от того, что программист может поверхностно и знает язык структурированных запросов, но не догадывается о том, что в текстовую переменную можно напихать бреда и атаковать сайт. Всякие икс-эс-эсы - от непонимания того, что может натворить та последовательность символов, которую клиент отправляет в качестве сообщения на форуме, в качестве логина, и тому подобное. Эксплойты через загрузку файлов - от непонимания того, как работает связка веб-сервера с генератором трафика. И так далее. Ты часто видишь сообщения о взломах сайтов. Ок. Каких сайтов? Которые какой-то школьник наваял на коленке? Ну дык читай выше про маленький скил допускающий уйму дыр. На сайты крупных компаний? Ну это уже отдельный бизнес по атаке таких жертв. Там уже немного другие технологии атакуются, нежели веб-сервер. Там сам сервер - железяка или логически (виртуальный) атакуется. Идет подбор пароля от шела, от СУБД, если она висит открытым портом, от фтп, если кто-то еще не отказался от этой технологии. Это уже выходит за рамки знаний пхп-программиста, так что не переживай. Впрочем, бывают и забавные случаи. Например, слитая поисковикам база СМСок. Кто помнит какой из ОпСоСов это был - мегафон или мтс? В общем прикольно было. Это был баг уровня "уязвимость". И последний момент, который нужно упомянуть. Это уязвимости стороннего софта и/или фреймворков, которые используются для обслуживания запроса. Такой софт нужно стараться держать в актуальном состоянии и надеяться, что авторы своевременно узнают и патчат найденные дыры. В пример тебе - пхпмайадмин и какой-нибудь вордпресс/джумла/другой_популярный_движок. Какие-то дыры давно были найдены, патчи выпущены, но школьник, который писал тебе сайт, вечно болеет и к бабушке на дачу ездит. Да и вообще ему приятнее девок за сиськи помять, чем следить за когда-то сданным сайтом. В итоге злодеи твой хост прощупывают, находят нужный софт и в подходящей версии, применяют известные эксплойты и вуа-ля - ты уже либо спам рассылаешь, либо вирусы, либо порнушкой людей радуешь. И может быть даже больше не являешься владельцем своего сайта. Или того хуже - сервера. В общем гуглить и читать, развиваться, и следить за разными си-ви-и-базами - вдруг там что-то про тебя скажут.
лэст бат нот лист. Это уязвимости, про которые ты узнаёшь постфактум и нихрена сделать толком не можешь. Некоторые просто забивают.
@igordata ну постфактум это когда к бабушке на дачу. А если ты сам мониторишь, или нанятые тобой аутсорсеры не засиживаются в дотке - про уязвимость прослышать можно и до фактической атаки на конкретный ресурс. И понять планы оригинальных авторов на выпуск заплатки. Или даже потратить время на выпуск собственной заплатки и предложение её авторам. Ну или по крайней мере пролатать свой код. Но и "просто забивают" тоже имеет место быть. Увы. Причем, как авторы софтинки, так и потребители.
@Ganzal Ты как воспитатель в садике - "Ая-Яй! Не пейте дети воду из лужицы, козлятами станете! " @Magnum там не всё так страшно, и не используй куки, лучше заюзай сессии, бери на контроль все входы и выходы из скрипта, чтобы чё попало сделать с ним не смогли, и не используй старые функции php типа mysql запросов, есть mysqli и pdo, а также подготовленные запросы очень классная штука для защиты от sql инъекций.
что-то смысла не улавливаю... Можно на пальцах? я думаю он о том, что некоторые хранят логины/пароли/уиды в куках, вместо того чтоб спрятать это в сессии и заэкспозить только айдишник сессии.
Да написал для новичка, как для профессионала. --- Добавлено --- Мне интересно он сразу понял о чём речь или сначала загуглил...
@Ganzal а я про себя тебе не чего не говорил... Мне просто кажется ты его напугал... Много инфы и всё кажется таким страшным, ну я прикинул если бы я это прочёл когда только сел за учебник... --- Добавлено --- @Ganzal просто ты как всегда суров.