Теперь
подумаем, что же можно сделать такого, чтобы, не случилось неприятностей, с
работой ваших скриптов. Перечислю основные положения:
1.
Всегда разбивайте один большой скрипт на несколько
маленьких, ненужно запихивать в один скрипт все, что может пригодиться, так как,
в крайнем случае, для объединения скриптов можно воспользоваться функцией include.
2.
Всегда храните пароли для доступа к сайту зашифрованными или
используйте md5() для получения и сравнения
хэш-суммы пароля.
3.
Никогда не передавайте в качестве параметров имена других
скриптов, т.к. этим можно воспользоваться. Лучше сделать небольшой скрипт,
который в зависимости от значения какого-либо параметра, выбирает, какой скрипт
лучше include()’ить.
Делается это очень просто с помощью оператора switch().
4.
Проверяйте, откуда и как был запущен ваш скрипт. Эту задачу
можно решить по-разному.
a.
Если ваш скрипт работает в составе какого-то основного, то
можно просто ввести какую-либо переменную, устанавливаемую в главном скрипте, и
проверяемую во всех подключаемых скриптах с помощью простого isset() или сложной функции, с
проверкой самого значения (к примеру, так делают почти все сотовые операторы, с
сайтов которых можно отправить SMS).
b.
Если же ваш скрипт работает отдельно, то можно проверять
значения с помощью getenv(), к
примеру, проверять getenv('QUERY_STRING') или getenv('HTTP_REFERER'). Но это не
дает никаких гарантий, т.к. эти значения можно без проблем изменить, если
запускать ваш скрипт с другого сайта
c.
Ну и самое важное используйте .htaccess, о нем много статей у меня на
сайте в разделе “статьи”.
5.
Еще можно попробовать технологии Zend, в частности Zend Optimizer, но
главное, что нужно учесть при использовании продуктов данного производителя, то,
что на сервере, у хостера должен быть установлен пакет Zend для PHP, в большинстве он установлен по
умолчанию. Все подробности о продуктах Zend и их возможностях на их официальном сайте http://www.zend.com/.
Конечно, важно еще понимать, какие
данные можно передавать через строку браузера, а какие нет. К примеру, на многих
сайтах часто встречается ошибка, когда пароль передают скрипту в качестве
параметра, через строку браузера использую метод Get, вместо метода Post, не учитывая, что браузер
сохраняет почти все запросы к просмотренным страницам, а от туда несложно
получить и пароль, несмотря на то, что он даже urlencode()'ированн.
Ну и в конце статьи небольшой
совет, касающийся безопасности ваших серверных приложений: никогда не раздавайте
налево и на право свои скрипты, которые вы писали лично для себя, или для своего
сайта. Т.к. найти брешь в чужом скрипте гораздо легче, когда видишь его исходный
текст и можешь понять его работу в целом.