php

Борьба с хакерскими атаками на PHP сайты

Защита от сканирования

При атаке в первую очередь запускается сканирование сайта

Для этого можно использовать библиотеку PHP IDS (Intruder Detection System) -

1. Библиотеку копируем в корень приложения в каталог IDS

2. Настраиваем конфиг файл (переименовываем IDS/Config.ini.php в IDS/Config.ini)

3. Прописываем base_path - абсолютный путь к IDS

4. Ставим use_base_path = true

5 Интегрируем вызов в всое web-приложение до обработчика параметров запроса (например в начало index.php)

Удаленная отладка PHP из Eclipse

 

Установка:

В Ubuntu/Debian для установки необходимо проделать следующие действия

sudo -s #входим в режим администратора

apt-get install php-pear #устанавливаем pecl

apt-get install php5-dev  #требуется для установки phpize

apt-get install make #требуется для установки утилиты компиляции make

pecl install xdebug #устанавливаем модуль отладки xdebug

Настройка:

В файле /etc/php5/apache2/php.ini добавляем строки

zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so #путь должен быть абсолютным

PHP Работа с XML

XML DOM

В PHP за работу с XML в режиме DOM отвечает расширение (extension) domxml. В windows по умолчанию оно выключено. Чтобы его включить надо в php.ini раскомментировать строки extension=php_domxml.dll и extension=php_iconv.dll

Кроме того стоит скопировать все файлы из php/dlls в windows/system32

Чтобы создать пустой DOM в памяти для XML существует функция domxml_new_doc При этом в любом xml должен быть корневой элемент, который лучше создать сразу

PHP - Передача DateTime параметров веб-сервису на .NET

.NET требует передавать параметры типа DateTime в формате YEAR-MONTH-DAYTHOUR:MINUTES:SECUNDS

Пример на PHP:

$dt = $cur_issue->DateStr("Y-m-d"); //Add time as SOAP needed

$dt .= \'T\';

$dt .= $cur_issue->DateStr("H:i:s");

Дата будет вида 2007-06-04T11:24:56

PHP Proxy HTML контента

<?php
//ini_set (\'error_reporting\', E_ALL);
//ini_set (\'display_errors\', \'on\');

function CachedFileImport($cachefilename, $filename, $cachelivetime, $newbaseurl)
{
//cached newspaper import
$cachedtime = filemtime($cachefilename);
//update cache every minute
// echo $cachedtime.\'-\'.time();
$isUpdateCache = time()- $cachedtime > $cachelivetime;
$text = "";
if(!$isUpdateCache){
$text = ImportFile($cachefilename);
}

Настройка Linux - Apache - PHP CGI

В режиме CGI

Eсли PHP под Linux настроен как CGI и возникаект ошибка Premature end of script headers, то поможет установка на исполняемый файл php прав на испольнение 744.

Пример:

chmod 744 /usr/cgi-bin/php

PHP - Zend Studio

Локальная отладка - расширение возможностей

Для отладки в локальном режиме Zend Studio использует версию php которая храниться в подкаталоге программы bin/php4 или bin/php5 соответственно.

Чтобы использовать более новые версии php4.xx или php5.xx необходимо скопировать следующие файлыиз дистрибутива в эти каталоги:

Пример:

PHP - Работа с ftp

Рекурентное создание каталогов

Для рекурентного создания каталогов лучше устанавливать перед созданием каждого промежудочного каталога текущим каталог \'/\'.

For recurrent following function work better.

Some ftp servers (like WarFTP) become demented if you\'ll try mkdir not from root dir and if path will be relative.

The second if one of dir (like \'/\') already exist You\'ll get access denied.

PHP использование серверов Oracle

 

Для доступа к базам Oracle в PHP есть два расширения php_oracle и php_oci8

php_oracle - базовый интерфейс, считается устаревшим. php_oci8 работает по протоколу OCI8 (работает с версиями Oracle 7.x/8.x/9.x) более гибок. Он поддерживает связывание глобальных и локальных переменных с меками Oracle, полностью раелизует поддержку LOB, FILE и ROWID, а также позволяет использовать переменные определенные пользователем.

PHP классы

Общее

В эру объектно ориентированного подхода к созданию ПО выживают языки программирования с поддержкой ОО. В PHP она реализована хоть и не вполне удачно (версия 4.0) но достаточно для большей части жизненных случаев. Похоже это на java. В 4-ой версии не хватает деструкторов (они появились в PHP5).

RSS-материал