Главная Новости

Безопасность языка PHP

Опубликовано: 05.09.2018

видео Безопасность языка PHP

Шифрование данных на PHP

Безопасность сервера

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



Поскольку изначально на языке PHP предполагалось сделать полноправный доступ всех пользователей к файловой системе, имеется возможность создать специальный скрипт, позволяющий считывать системные файлы, такие как passwd, а также управлять большинством сетевых соединений, отправлять статьи на печать и т.д. Словом, вы должны быть твердо уверены в том, что модифицируемые вами файлы соответствуют вашим исходным намерениям. Но существуют личности, которые стремятся использовать данные сервера в своих корыстных целях. Именно поэтому при атаке на файловую систему специально созданная программа либо ограничивает доступ пользователю, через права которого функционирует сервер, либо осуществляет проверку всех данных, вводимых сейчас пользователем.


PHP UP | Урок №20 | Часть #2 | Безопасность веб-приложений - XSS, SQL injection

Безопасность Базы Данных

Для сохранения или получения любых сохраненных данных пользователю необходимо установить соединение с ранее созданной базой данных. То есть необходимо отправить адекватный запрос, извлечь результат из этой операции, а после этого закрыть соединение. На сегодняшний день наиболее распространённым стандартом общения является язык структурированных запросов (SQL). Но при использовании данного стандарта следует помнить об атаке посредством запроса SQL, которая на языке программистов называется «SQL-инъекция». Само собой программа PHP не защитит вашу базу данных. Но главным правилом создателей баз данных является максимальный уровень защиты. Словом, чем больше опасных участков вы проработаете, тем сложнее злоумышленнику будет получить доступ к вашей базе данных или «сорвать» её. Исключительный дизайн баз данных и прочих программных приложений с подобной проблемой поможет справиться. Для осуществления взаимодействий между базой данных и клиентом, а также шифрования данных необходимо использовать безопасные ssh или SSL соединения. Если вы будете использовать подобные типа связи, то сбор данных и мониторинг трафика вашей базы данных для злоумышленника усложнится в сотни раз.

Глобальные переменные

Наиболее спорным моментом безопасности при разработке языка PHP4 стала замена стандартного значения опции register_globals с ВКЛ. на ВЫКЛ. Большинство не ведающих пользователей не приняли это во внимание, но они не знали, что за опция отключена и как она влияет на функциональность PHP. Так вот, данная опция напрямую сочетается с вопросами действующей безопасности. Следует знать, что сам функционал опции никак не влияет на саму безопасность, но вот сама угроза заключается в некорректном использовании предоставленных возможностей.

К примеру, если значение параметра стоит в положении On (Вкл), то перед тем, как выполнить ваш код, начнётся функционирование различных глобальных переменных. Также с учётом этого факта написать потенциально вредоносный код очень и очень легко. Отключение данной переменной было противоречивым решением, но создатели PHP всё-таки отважились и установили значение по умолчанию для данной функции на OFF. В ином случае при создании кода разработчики не могли бы сказать с уверенностью, откуда появилась та или иная директива и насколько высок уровень её достоверности. До подобного решения о приостановлении функционирования переменной register_globals многие переменные, которые определяются разработчиком внутри процесса, а также передаваемые клиентом внутренние данные с лёгкостью могли перемешаться.

Исходный код скриптов

Как правило, наиболее опасные места в большинстве PHP-скриптов возникают не по причине «слабости» самого языка, а из-за прописанного кода, который был создан без учета требований, соответствующих нынешнему уровню безопасности. Следствие из этого: вы всегда обязаны выделить минутку времени на то, чтобы исследовать разрабатываемый участок кода, дабы оценить исходящую угрозу от ввода переменных с нестандартным значением. Чтобы избежать подобных ситуаций, нужно тщательнейшим образом проверять исходный код и быть на 100% уверенным в том, что абсолютно все данные, которые будут передаваться Web-браузером, будут проверены надлежащим на то образом. Также допустимо аварийное отключение конфигурационных опций, таких как magic_quotes, register_globals и многих других, которые приведут к острым сомнениям относительно значения переменных или происхождения директивы. Оказать очень важную помощь может режим error_reporting, поскольку при написании исходного кода вы будете предупреждены об использовании опасных переменных до самопроверки или инициализации. Обратив внимание на всё вышесказанное, вы обезопасите свой сайт от вторжений злоумышленников или хакерской атаки.

Заключение

В целом, внесение ряда определенных неясностей не намного, но всё же способно улучшить общий уровень защищенности системы. Не редки случаи, когда вот такие мелочи спасали жизнь сотни сайтам. Так вот, несколько лёгких методик помогут вам скрыть основу PHP, тем самым усложнив работу потенциального недоброжелателя, пытающегося найти лазейку в вашей системе. Инсталлировав опцию expose_php в значение off в файле конфигурации php.ini, вы в разы уменьшите количество информации, доступной взломщику. Существует и ещё одна методика, заключающаяся в особой настройке web-сервера, после которой он будет обрабатывать файлы с разнообразными расширениями как специальные PHP-скрипты. Применив эту методику, вы можете использовать при написании исходного кода весьма нестандартные расширения.

2168

rss