Post_80bДля того чтобы достичь успеха постоянно нужно расширять и углублять свои знания. Не останавливаться на каком-то одном элементе когда он уже усвоили, а пытаться усвоить больше.

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

Тема данной публикации касается такого вопроса как сначала выявлять проблемные места в безопасности РНР, затем выяснить каким образом можно защитить ваш РНР проект.

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

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

Я считаю, что нужно иметь понятие об основных элементах безопасности языка РНР, кроме того также научиться включать их в свои разработки. А потом быть уверенным в себе когда можно будет сказать, что я научился во веб-дизайне, а главное разрабатывать безопасные РНР проекты.

Правильно построенный защиту, должен выполнять все основные требования безопасности, и в то же время не должен негативно влиять на работу пользователя. Прежде всего очевидно каждому интересно угрозы могут существовать с использованием РНР.

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

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

Большинство начинающих не знакомы с проблемами безопасности языка РНР, и обычно не задумываются о защите проекта, надеясь на возможность восстановления. Но лучше, все таки применить функции безопасности и уже в самом начале.

В данной категории «Безопасность в PHP» вы познакомиться с материалами в которых будет говориться о правилах безопасности РНР, а также можно будет узнать о способах, с помощью которых можно отбросить атаку на безопасность РНР.

Сообщения об ошибках.

Анализ проблем и недостатков в безопасности можно сделать путем проверки сообщений об ошибках в РНР.

Анализировать проблему также означает открыть способ ее решения. [/ stextbox]

Хорошо, когда еще в самом начале определить почему элемент в РНР не работает должным образом. С помощью сообщений об ошибках, мы можем определить, что именно, и в каком месте не работает так как нужно.

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

Журнал ошибок позволяет определить слабые места вашего сайта, и осуществить атаку. Кроме того станет понятно как работает ваше приложение, что позволит его скомпрометировать. Нападавших заинтересует ваше приложение, и они захотят использовать любую возможность для атаки.

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

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

Изменение строк в файлах конфигурации

Что необходимо сделать, чтобы сделать доступ к журналу ошибок как можно больше безопасным. По умолчанию РНР-сервер сохраняет все ошибки в отдельном журнале. Идеально было бы иметь доступ к этому серверу (консоль доступа к системе Linux, консул доступа к системе Windows).

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

Измените четыре строки в файле конфигурации php.ini (как найти файл php.ini можно перелянуты в публикации «Как импортировать базу данных больших размеров на Денвер» , или организовать поиск по имени файла) для создания отдельного внешнего журнала ошибок РНР.

display_errors  — это опцция позволяет нам показывать или не показывать, ошибки непосредственно на экране, как обычно данная опция включается на время написания РНР-скриптов, для того чтобы иметь возможность видеть сообщения об ошибках, на реальных же серверах в интернете она обычно исключена из за безопасности.

error_reporting  — эта опция определяет о типы ошибок РНР сообщается.

типы ошибок

E_ALL — ВСЕ ПРЕДУПРЕЖДЕНИЯ ОБ ОШИБКИ

E_ERROR — критическая ошибка ВРЕМЕНИ ВЫПОЛНЕНИЯ

E_WARNING — ПРЕДУПРЕЖДЕНИЕ ВРЕМЕНИ ВЫПОЛНЕНИЯ

E_PARSE — ОШИБКИ трансляции

E_NOTICE — ОТМЕТКИ ВРЕМЕНИ ВЫПОЛНЕНИЯ (предупреждение которые скорее всего свидетельствуют о логические ошибки в сценарии, например, использование неинициализированной переменной)

E_CORE_ERROR — КРИТИЧЕСКИЕ ОШИБКИ В МОМЕНТ СТАРТА РНР

E_CORE_WARNING — НЕ ошибках В МОМЕНТ СТАРТА РНР 

E_COMPILE_ERROR — критическая ошибка ВРЕМЕНИ трансляции 

E_COMPILE_WARNING — ПРЕДУПРЕЖДЕНИЕ ВРЕМЕНИ трансляции

E_USER_ERROR — сгенерированный пользовательской ошибки

E_USER_WARNING — сгенерированный ПОЛЬЗОВАТЕЛЕМ ПРЕДУПРЕЖДЕНИЕ

E_USER_NOTICE — сгенерированный ПОЛЬЗОВАТЕЛЕМ ЗАМЕТКИ

пример

// Отключить все сообщения об ошибках

error_reporting (0);

// Сообщать о простых ошибки во время выполнения

error_reporting (E_ERROR | E_WARNING | E_PARSE);

// Сообщение E_NOTICE может пригодиться (для неинициализированных переменных или для неправильного ввода имени переменных)

error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Сообщать обо всех ошибках РНР

error_reporting (E_ALL)

Рекомендуют установить E_ALL (сообщать обо всех ошибках СРН) [/ stextbox]

log_errors  — данная опция определяет, должны сообщения об ошибках скриптов протоколироваться в файле регистрации ошибок.

error_log  — эта опция позволяет определить путь к файлу ошибок;

значение может быть выставлено на имя файла на строку «syslog» или совсем не выставлено (по засовчуванню).

В случае если  error_log  в php.ini   НЕ выставлен, логи РНР ведутся за счет веб-сервера (например в Apache  error_log) , если значение выставлено на имя файла, то РНР будет писать логи в указанный файл, если же значение вииставлено на ключевое слово » syslog «, то логи РНР будут вестись за счет регистрации операционной системы (для UNIX-систем это стандартный журнал [syslog] для систем Windows [event log]).

рекомендации 

Рекомендации о том, как работать с параметрами на разных этапах развития вашего РНР проекта.

На стадии развития проекта параметры проекта должны быть

display_errors-On

error_reporting-E_ALL

log_errors-On

error_log-Варьируется

На стадии работы готового проекта

display_errors-Off

error_reporting-E_ALL

log_errors-On

error_log-Варьируется

 

Во время работы проекта (в интернете) необходимо приостановить отображение ошибок на экране для того, чтобы они не были заметно пользователям, сохранить эти ошибки в отдельном документе и исправить позже. [/ stextbox ]

Конфигурация параметров системы сообщения об ошибках

Далее мы сосредоточим внимание на изменения настроек которые мы упоминали, мы увидим которые именно можно настраивать и параметры необходимо объединить для правильного функционирования.  

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

Первым, и наиболее важным шагом, является изменение значения в файле конфигурации php.ini

Файл конфигурации htaccess

Веб-сервер Apache обладает собственными конфигурации. Наиболее используемый это .htaccess в котором мы можем поменять параметры  Apache .

Обычно файл  .htaccess лежит в корневом каталоге и действует на весь сайт и на все директории (даже если у них нет своего  .htaccess ). Если необходимо создать конкретные настройки  Apache для определенной папки, нужно поместить в нее новый файл  .htaccess , и его действие розпоширеться на эту папку.

Причем  .htaccess который лежит в корне сайта никак влиять на эту папку не будет.

Некоторые из параметров .htaccess ссылаются и на РНР. В качестве альтернативного способа мы можем поменять параметры РНР непосредственно в файле конфигурации Apache, .htaccess. Как ранее упоминалось это поможет в том случае если у нас не беде доступа непосредственно к файлу  php.ini на РНР сервере.

Строка который необходимо внести в .htaccess будет следующий php_flag directive_name directive_value

В таком случае мы не сможем использовать такие константы как «E_ALL». Необходимо их заполнить числовыми значениями. Для E_ALL числовое значение будет 8191.

Числовые значения для всех констант РНР.

1 — E_ERROR;

2 — E_WARNING;

4 — E_PARSE;

8 — E_NOTICE; 1

16 — E_CORE_ERROR;

32 — E_CORE_WARNING;

64 — E_COMPILE_ERROR;

128 — E_COMPILE_WARNING;

256 — E_USER_ERROR;

512 — E_USER_WARNING;

1024 — E_USER_NOTICE;

8191 — E_ALL

Таким образом мы вводим следующие кодовые строки в конфигурацию сервера Apache

php_flag display_errors прочь

php_flag error_reporting 2047

php_flag log_errors на

php_flag error_log / сайт / журналы / php_errors / журнал


интересная задача

Для того чтобы сделать debug (проверку и отладку исполняющих файлов) в приложении вам необходимо выполнить настройки уведомлений об ошибках, которые мы бы хотели получить в случае, если возникнут проблемы. Эта конфигурация не реализуется по умолчанию в файле конфигурации РНР.

<? PHP

error_reporting ($ переменная)

………………..

?>

В представленную выше модель скрипта мы ввели $ переменная. Выберите из указанных пунктов кодовый строку, на который по вашему мнению, нужно заменить $ переменная в нашем скрипте.

а) error_reporting (E_ERROR | E_WARNING | E_NOTICE);

б) error_reporting (E_ALL ^ ​​E_NOTICE)

в) error_reporting (E_ERROR | E_PARSE | E_NOTICE);

г) error_reporting (E_WARNING)

ответ

[спойлер]

 б) error_reporting (E_ALL ^ ​​E_NOTICE)

<? PHP

error_reporting (E_ALL ^ ​​E_NOTICE);

………………..

?>

[/спойлер]


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

А также как проверить данную форму в программах типа Денвер (пакет который создаст локальный сервер у вас на компьютере) правильно ли она функционирует.

На этом все до встречи.