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

Сайт, в понимании обычного человека, является набором страниц с различным контентом-будь то текст, флеш, музыка, видео и т.д. Но для программиста - это прежде всего система выдачи страниц, реагирующая на действия пользователя. Контент в ней является лишь оболочкой, а вот как эту оболочку развернуть и показать определяет программа. Под программой, в данном случае, я подразумеваю серверные скрипты (PHP-скрипты), взаимодействующие с СУБД.

В общем случае, любой сайт представляет из себя такой набор скриптов и БД, говоря о принципе от общего к частному здесь стоит ли забывать о деталях? "Лес рубят - щепки летят" - гласит народная мудрость... Но не все так просто, слишком сильно можно ошибиться если не учитывать мелочей.. Что я имею ввиду!? Да, например, банальную проверку GET и POST - запросов. Очень важно, при разработке учитывать что что-то может пойти не так как задумывается, и из-за этого может нарушиться целостность всей системы и привести к фатальным последствиям-вплоть до потери конфиденциальной информации.

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

Например, если вы хотите на своем сайте организовать человеко понятные урлы (ЧПУ), то вам будет необходимо определить по строке id раздела в БД - нельзя никогда доверять данным пришедшим от пользователя, поэтому, категорически запрежено искать по "сырой строке", вначале ее надо обезопасить от всех "опасных символов", и лишь затем вписывать в SQL - запрос. Иначе вы рискуете получит взлом сайта посредствам SQL-инъекции аля UNION ;)).

Или например, вы должны вывести информацию о пользователе по его id - как правило это число, причем целое и больше 0, поэтому, вам необходимо проверить: 1. число ли это 2. целое ли оно 3. больше ли оно 0, и уж затем, если проверка прошла успешно, искать информацию о нем. В противном случае может возникнуть сбой программы, неверно записаться данные в БД, что может привести к печальным последствиям.

Или, хороший пример, вы разрабатываете сервис "забыли пароль": пользователь вводит email, система определяет есть ли такой email в БД, если есть узнает пароль пользователя и высылает ему. Что здесь важно? важно проверить email ли это, если нет - выдать соответствующее сообщение, если это email, но пользователя с таким email нет в системе выдать что нет такого пользователя, а если все верно, то выслать пароль. Но, тут, опять же, не все так просто. Да, нужно проверить email на корректность по регуляркам, проверить есть ли такой пользователь, но... Если пользователь злоумышленник, и он с кокой-либо целью пробивает, зарегистрирован ли тот или иной email у вас, нужно ли нам говорить ему что такой есть или нет, и вообще выдавать ему, по сути конфиденциальную информацию таким образом. Я считаю, что в данной ситуации лучшим решением будет-дезинформация, т.е. то что вводит пользователь в системе обрабатывается как положено, но вне зависимости от того, что ввел пользователь в поле email писать ему что все круто получите пароль :))).

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


Теги: , , , , , , , , , , , , , , , , ,

Один комментарий на запись “Программирование - продумывание мелочей”

  1. Reordedasyday пишет:

    Знакомый посоветовал зайти на этот блог и явно не зря.

    [Ответить]

Оставить комментарий