Для отладки HTTP-запросов в некоторых случаях удобно воспользоваться утилитой curl.
GET:
curl -i http://api.sitename.lo/custom-uri?param1=value¶m2=value
POST + COOKIES:
curl -i -d "param1=value¶m2=value" -b "id=1;pw=pass-cookie-value" http://api.sitename.lo/custom-uri
BASE AUTH + FILE UPLOAD:
curl -i -u user:pass -F "avatar=@/home/user/Pictures/my-avatar.jpg" http://api.sitename.lo/custom-uri
HTTPS-запросы без проверки подлинности сертификата с нестандартным методом:
curl -i -k -X DELETE https://api.sitename.lo/custom-uri
Получение заданного диапазона байтов из ответа (первые 100 байт):
curl -i -r 0-99 http://api.sitename.lo/custom-uri?param=value
Сохранение заголовков в файле:
curl -i -D headers.txt http://api.sitename.lo/custom-uri?param=value
Для создания phar-архива необходимо написать небольшой скрипт, в котором следует указать папку с исходниками, папку в которой будет помещён архив и само имя архива. Например:
<?php
$srcRoot = 'source-dir';
$buildRoot = dirname(__FILE__);
$phar = new Phar(
$buildRoot . '/archive.phar',
FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
'archive.phar'
);
$phar->buildFromDirectory($srcRoot);
$phar->setStub('#!/usr/bin/env php
<?php Phar::mapPhar(); require "phar://archive.phar/index.php"; __HALT_COMPILER(); ?>');В основе структурного тестирования лежит довольно простая идея: необходимо протестировать каждый оператор тестируемого кода хотя бы один раз. Самый лёгкий способ покрыть весь код предполагает подсчёт числа возможных путей выполнения тестируемого алгоритма и создание минимального набора тестов, проверяющих каждый путь.
Расчёт минимального количеств тестов прост:
1. Начните с 1 для последовательного выполнения программы.
2. Прибавьте 1 для каждого из ключевых слов if, while, do, for, and (&&), or (||).
3. Прибавьте 1 для каждого блока case. Если присутствует блок, используемый по-умолчанию, прибавьте ещё 1.
1. SQL-инъекции. Лучшее средство защиты от них экранированные параметризованные запросы.
2. XSS (Cross Site Scripting). Для защиты использовать htmlspecialchars().
3. CSRF (Cross Site Request Forgery). Для защиты все ответы форм проверять на HTTP_REFERRER, чтобы быть увернным, что запрос пришёл из безопасного места.
4. File Inclusion. Для защиты всегда проверять, чтобы пользовательский ввод не попадал в require(), require_once() , include(), include_once().
5. File Upload. Если бизнес-задача требует загрузки пользовательских файлов, нужно убедиться, что пользователь не контролирует расширения файлов и флаг "исполняемый". Это позволит быть уверенным, что атакующий не загрузит вредоносные файлы на сервер и не выполнит код на сервере.
При появлении ошибки:
PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 'MSK/4.0/no DST' instead in Unknown on line 0
Нужно прописать в конфиге PHP корректные настройки таймзоны. Все корректные значения таймзон можно посмотреть http://php.net/date.timezone. Наример, вот так:
date.timezone = "Europe/Moscow"