За месяц Январь, 2011

Матрица компетентности программиста

Матрица компетентности программиста, часть 1
https://docs.google.com/Doc?docid=d28gm4q_55n35dkht4&hl=ru

Матрица компетентности программиста, часть 2
https://docs.google.com/Doc?id=d28gm4q_56hmv6f72z

Оригинал матрицы на английском
http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

Проверь свою компетентность, Программист (с большой буквы!)

ps. Совершенству нет предела…

Опубликовано Январь 9, 2011 | автор: levik  |  Нет комментариев »

Фильтрация данных в PHP

you should always be wary of any data provided by outside services

Все данные, поступающие в php-скрипт (да и вообще в любую программу) “извне” следует проверять на “корректность”. Это может быть как защита “от дурака”, так и от “злобного хакера”.

Характерные уязвимости в PHP-скриптах и фильтрация данных

0. Убедитесь, что переменная “та, что надо” (при включении register_globals, существует возможность вместо $_SESSION или $_COOKIE переменной обратиться к $_GET или $_POST; не лишним будет проверить HTTP_REFERER)
1. Все переменные, которые предполагают числовое (целое,дробное, дата-время) значение следует привести к соответствующему типу;
1* Имеет смысл проверить на допустимость (неотрицательное, меньше допустимого максимума,несуществующая дата) в зависимости от контекста;
2. Все строковые переменные, которые имеют ограничение по длине следует “укоротить”
3. Все строковые переменные следует “очистить” от недопустимых символов (можно воспользоваться, например, функцией preg_replace с заданием соответствующего шаблона регулярного выражения - для email, для имени домена, для логина пользователя и т.д.)
4. Во всех данных, попадающих в запрос к базе данных следует экранировать спецсимволы (addslashes/mysql_escape_string… - кавычки, проценты в LikE и т.д.) SQL-инъекции (SQL injection)
5. Все данные, которые выводятся в браузер следует “почистить” от недопустимых HTML-тэгов (xss-уязвимости через тэги начиная от

Начиная с версии 5.2.0 в PHP присутствуют специальные функции для фильтрации данных, см. filter_var. Встроенные константы позволяют не задумываться о регулярных выражениях для email, например (хотя, общее понимание лишним не будет)

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

Если будут рекомендации по дополнению списка или корректировке - добро пожаловать в комментарии. Или Orphus =)

Ссылки по фильтрации данных в PHP
http://ru.php.net/manual/en/book.filter.php
http://phpclub.ru/detail/article/2003-12-01
http://phpclub.ru/detail/article/2003-09-23
http://itstep.wordpress.com/2010/05/31/php-vs-aspx/
http://www.webpeeps.ru/article/12

Опубликовано Январь 8, 2011 | автор: levik  |  Нет комментариев »

ISA, IIS и сертификаты

Потребовалось обновить сертификаты на MS ISA сервере..

http://sysadmins.ru/topic254940.html (много ссылок по тексту)

http://rublog.alex-trofimov.com/2011/01/blog-post_13.html

http://isaserver.ru/forums/p/8819/40878.aspx#40878

http://www.msadmin.ru/index.php?option=com_content&view=article&id=1:-exchange-2007&catid=2:exchange&Itemid=3

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

Опубликовано Январь 6, 2011 | автор: levik  |  Нет комментариев »

PLESK watchdog new year error: WDExc (pack-sysstats 2011-year-problem)

С новым 2011 годом панель Plesk от Parallels поздравила порцией ошибок:

/usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats day
/usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats week

ERROR: WDExc
Error occurred while processing database query: ‘MySQL query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘group by service_id, type, round(unix_timestamp(time) / 200, 0) having count(val’ at line 3′

0: /usr/local/psa/admin/plib/modules/watchdog/wdlib.php:1050
wd__db_query(string ’select service_id, type, unix_timestamp(min(time)) as min_time, unix_timestamp(max(time)) as max_time, avg(value) as avg
from module_watchdog_sys_stat where
group by service_id, type, round(unix_timestamp(time) / 200, 0) having count(value) > 1 limit 10000;’)
1: /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats:68
pack_statistics(integer ‘200′, boolean  false, boolean  false)
2: /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats:49

Что интересно, видимо не меня одного - поскольку обсуждение пошло довольно бурное (правда по началу без каких-либо комментариев со стороны разработчиков) - такие поздравления стали приходить ежедневно на всех серверах с включенным модулем watchdog. При этом версии панели встречаются самые разные 8.*, 9.*

http://forum.parallels.com/showthread.php?t=107458&page=2
Читать целиком »

Опубликовано Январь 2, 2011 | автор: levik  |  Нет комментариев »