В основе структурного тестирования лежит довольно простая идея: необходимо протестировать каждый оператор тестируемого кода хотя бы один раз. Самый лёгкий способ покрыть весь код предполагает подсчёт числа возможных путей выполнения тестируемого алгоритма и создание минимального набора тестов, проверяющих каждый путь.
Расчёт минимального количеств тестов прост:
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. Если бизнес-задача требует загрузки пользовательских файлов, нужно убедиться, что пользователь не контролирует расширения файлов и флаг "исполняемый". Это позволит быть уверенным, что атакующий не загрузит вредоносные файлы на сервер и не выполнит код на сервере.
Чтобы сконвертировать vhd (Microsoft Virtual PC) файл в vdi (VirtualBox) формат, можно воспользоваться командой:
VBoxManage clonehd source.vhd target.vdi --format vdi
С помощью VBoxManage можно и обратная конвертация (vdi в vhd):
VBoxManage clonehd source.vdi target.vhd --format vhd
Случается, что данные в mysql таблице хранятся в кодировке отличной от кодировки таблицы. Такое могло произойти, например, при заливке данных без указания кодировки источника. Исправить подобную ситуацию можно следующим образом:
CREATE TABLE `tmp` (SELECT * FROM `broken_table`); -- возвращаем столбцы в их "родную" кодировку ALTER TABLE `tmp` MODIFY `wrong_data` CHAR(30), CHARACTER SET latin1; -- конвертируем данные в бинарные ALTER TABLE `tmp` MODIFY `wrong_data` BLOB; -- возвращаем правильную кодировку ALTER TABLE `tmp` MODIFY `wrong_data` CHAR(30), CHARACTER SET utf8;
Далее исправленные данные переносим из временной таблицы в таблицу-исходник.
Баг был замечен в Debian 7.0 Wheezy. Открываем файлы :
/usr/share/gnome/shutdown/libcanberra-logout-sound.sh
/usr/share/gnome/autostart/libcanberra-login-sound.desktop
Меняем id звуковых событий:
--id="desktop-login" на --id="login"
--id="desktop-logout" на --id="logout"