5 полезных советов по созданию PHP сайтов

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

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

Совет 1: Использование собственных сообщений об ошибках.

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

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

error_reporting(0);

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

Подсказка 2: Отключение в РНР "плохих особенностей"

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

Примечание: Эти функции могут быть вообще не включены или их невозможно отключить. Это зависит от места, где Вы разрабатываете свое приложение и версии PHP.

Функция - Register Globals (register_globals)

Эта функция была призвана помочь для быстрой разработки приложений. Например: url: http://www/yoursite.com/index.php?var=1. Этот пример включает в себя строки запроса. Функция register_globals позволяет нам получить переменную $var вместо глобальной переменной $_GET[“var”] автоматически. С первого взгляда это может быть полезно, но к сожалению теперь все переменные обладают таким свойством. Теперь мы можем легко попасть в PHP приложение, которое не защищено от этого непредвиденного последствия.

Этот фрагмент кода является лишь одним типичным примером:

				if( !empty(  $_POST['username'] ) && $_POST['username'] == 'test' && !empty(  $_POST['password'] ) && $_POST['password'] == "test123" )
			    {
			    $access = true;
			    }
			

Если приложение работает с register_globals то, пользователь может просто поместить access = 1, в строке запроса, и будет затем иметь доступ к любому разделу скрипта.

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

Отключение с. Htaccess

php_flag  register_globals 0

Отключение с php.ini

register_globals  = Off 

«Магические кавычки»

«Магические кавычки» - это характерная черта сохранять программисту используя addslashes() и другие аналогичные функции в своем коде. Есть, по крайней мере, две проблемы, связанные с «волшебными кавычками». Одной из проблем является использование обоих котировок «кавычек» и addslashes(). Если Вы это используете тогда, получите несколько путей добавления ошибок. Вторая проблема, если сделать предположение, что «магические кавычки» включены, а на самом деле это не так. Тогда все входные данные носят неконтролируемый характер. Рекомендуется отключить эту функцию и использовать надлежашие проверки вместо этих функций. К сожалению, мы не можем отключить «магические кавычки» из сценария. Для этого мы будем использовать htaccess и php.ini:

Отключение с. htaccess

php_flag  magic_quotes_gpc 0 php_flag magic_quotes_runtime 0

Отключение с php.ini

					magic_quotes_gpc  = Off
					magic_quotes_runtime  = Off
					magic_quotes_sybase  = Off
				

Совет 3: Проверять входные данные

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

					if ( !  preg_match( "/^[0-9]{1,2}$/", $_GET['month'] ) )
					{
					// handle error
					}
					if ( !  preg_match( "/^[0-9]{1,2}$/", $_GET['day'] ) )
					{
					// handle error
					}
					if ( !  preg_match( "/^[0-9]{4}$/", $_GET['year'] ) )
					{
					// handle  error
					}
				

Таким способом мы проверяем данные, какие входят в приложение. Этот тип проверки почни не оставляет места для таких типов атак как Sql.

Совет 4: Защита от входного нападения

Web-приложение обычно принимает входные данные от пользователей, и отображает их в некотором роде. Это происходит, конечно, в самых разнообразных формах, включая комментарии тем или страниц блогов, которые написаны с помощью HTML. Прием таких данных может быть опасным. Если хотя бы один путь остается открытым, может быть захвачен сайт.
Есть несколько способов защититься от таких нападений. Одним из таких способов является вообще не использовать HTML при форматировании ввода. Это не всегда является вариантом для форумов и блогов.
Если Вы хотите, чтобы пользователь мог выполнить простое форматирование входных данных тогда, можно разрешить только несколько выбранных тегов HTML (без атрибутов), такие как <strong> или <em>. Или, в качестве альтернативы, Вы можете использовать популярный набор тегов, называемый «BBCode» или «BB теги». Это может быть идеальным способом разрешить форматирование, и в тоже время нет ничего опасного. Вы можете использовать уже существующие пакеты, такие как HTML_BBCodeParser или написать собственный.

Совет 5: Защита от SQL - инъекций

И последнее, но не последнее по важности. Одной из самых известных атак на Web-приложения, является Sql-инъекция. Атака может произойти, если данные носят неконтролируемый характер и при вводе используются символы как в Sql, такие как одиночне или двойные кавычки.
К счастью, PHP действительно предлагает несколько инструментов, чтобы помочь защитить ваши вводы в базу данных. При подключении к SQL. Вы можете использовать эти функции, и переменные должны быть безопасными для использования в запросах. Большинство крупных систем баз данных с помощью PHP предложили включить эти функции защиты. MySQL позволяет это сделать одним из двух способов.
Либо с помощи mysqli_real_escape_string функции при подключении к серверу:

					$username =  mysqli_real_escape_string( $GET['username'] );
					mysql_query(  "SELECT * FROM tbl_members WHERE username =  '".$username."'");
				

Или с помощью подготовленных заявок.

					$id =  $_GET['id'];
					$statement  = $connection->prepare( "SELECT * FROM tbl_members WHERE id = ?" );
					$statement->bind_param( "i", $id );
					$statement->execute();
				

Хотя это и может защитить Ваше приложение от несанкционированного входа, Вы все равно должны использовать надлежащие проверки данных.

Просмотров: 1400      Опубликовал: Евгений Фединчик      Дата: 05.03.2010 11:19:20
  • Понравился урок? Добавьте его к себе в закладки.

    Последние уроки категории:

    Сокращение PHP кода

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

    Видимость переменных в PHP

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

    Как читать Rss ленты?

    Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.

    Установка и настройка PHP+Apache

    В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.

    Как выбрать фреймворк

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

    Комментарии:

    • Осталось: 1000 символов.
      Сохранить комментарий Отправка комментария
    lessons
    downloads
    search
    hosting

    Ищите хороший и не дорогой хостинг?

    Хостинг avahost.ua
    VPS VDS - виртуальный выделенный сервер
    sistems
    RBK Money

    Обменник.ws
    Статистика HitUa