Преобразование ошибок в PHP в исключения
Навеяно этим сообщением на форуме.
Дано:
- фреймворк перехватывает все возникающие ошибки (которые разрешены текущим значением
error_reporting()) и аварийно завершает работу скрипта (в целях отладки/безопасности/нужное подчеркнуть); - имеется код, вызывающий PHP-функцию, которая может сгенерировать предупреждение (в оригинальном сообщении это
mkdir()— кидаетE_WARNING, если не удаётся создать каталог) - местные стандарты кодирования запрещают использование оператора
@(довольно распространённая практика).
Требуется обработать возникшую ошибку без авоста скрипта. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 8Авг
2011
AOL Postmaster взломан!
Ибо нефиг себя по-свински вести.
Автор: Wandering Soul, опубликовано в: Безопасность, комментариев: 4Авг
2011
Перехват фатальных ошибок в Yii
Как и Kohana, Yii помогает разработчику, отлавливая неперехваченные исключения и ошибки в коде. Как и в Kohana, реализуется это одинаково — через функции PHP set_exception_handler() и set_error_handler(). Но, в отличие от Kohana, Yii не умеет перехватывать фатальные ошибки (E_ERROR в терминах PHP).
Как следствие, если приложение сгенерирует фатальную ошибку (например, вызов несуществующей функции), у разработчика все шансы об этом не узнать (например, на production-сервере с display_errors установленным Off). Конечно, если приложение хорошо протестировано шансы возникновения такой ситуации близки к нулю, но если приложение позволяет пользователю устанавливать какие-либо свои дополнения, то лучше узнавать о проблемах прежде, чем начальник получит кучу гневных писем
Далее »
Авг
2011
Вложенные транзакции в PDO
В PDO есть такая особенность: отсутствие поддержки вложенных транзакций.
Вложенные транзакции бывают весьма полезны: например, у нас есть два сервиса, которые могут взаимодействовать между собой. Сервис А начинает транзакцию, что-то делает, затем вызывает сервис Б, затем подтверждает транзакцию.
Может так случиться, что сервисы А и Б разрабатываются разными людьми и разработчик сервиса Б может не знать, что сервис А уже начал выполнение транзакции. Как следствие, при использовании PDO как только сервис Б попытается начать транзакцию, PDO выбросит исключение, предупреждающее о наличии активной транзакции.
Тем не менее, такие СУБД как MySQL и PostgreSQL поддерживают вложенные транзакции (о чём PDO не знает). Поэтому было бы неплохо добавить поддержку вложенных транзакций для данных СУБД в PDO. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 4Авг
2011
Ставим спам в комментариях на службу людям
Я давно получаю по несколько тысяч спам-комментариев в день (не то, что мне он мешает — система его отсеивает полностью автоматически) и, как следствие, давно думаю о том, как заставить этот спам служить людям.
Начиналось всё созданием чёрных списков типа DNSBL (сюда попадали IP-адреса спамеров) и URIBL (а сюда — рекламируемые домены), но на раскрутку очередного чёрного списка (а также на его поддержание) банально не было ни сил, ни времени.
Закончилось всё тем, что я прекратил заниматься велосипедостроительством, зарегистрировался на Stop Forum Spam и теперь отсылаю весь полученный спам туда. Хотя я не во всём согласен с SFS, положительным моментом является то, что списки спамеров мониторятся Spamhaus (пример 1, пример 2). Хотя Spamhaus о себе тоже много думает (блокировать почту на основании того, что с данного IP-адреса идёт форумный спам — бред), тем не менее, у Spamhaus больше шансов прикрыть спамера, чем у простого блоггера.
На этом лирическое отступление закончено, далее идёт рассказ о том, как автоматически сообщать об автоматическом спаме в Stop Forum Spam, ибо чем больше отчетов они получат, тем быстрее спамер будет остановлен. Далее »
Автор: Vladimir, опубликовано в: WordPress, комментариев: 8Авг
2011
Корейцы разбушевались…
Сегодня с утра наблюдается какая-то повышенная активность хакеров с корейскими IP-адресами.
Были замечены попытки подбора паролей на SSH со следующих IP-адресов:
| 14.36.36.243 | 14.32.0.0/11 |
| 14.42.239.118 | |
| 59.2.171.221 | 59.0.0.0/11 |
| 59.2.184.48 | |
| 59.17.15.76 | |
| 59.29.157.41 | |
| 61.76.108.200 | 61.72.0.0/14 |
| 119.195.195.78 | 119.192.0.0/11 |
| 119.199.168.176 | |
| 121.131.45.67 | 121.128.0.0/11 |
| 121.146.29.82 | |
| 121.159.193.229 | |
| 121.165.92.190 | 121.160.0.0/11 |
| 121.169.48.28 | |
| 121.187.210.87 | |
| 175.209.131.3 | 175.192.0.0/12 |
| 220.73.5.10 | 220.72.0.0/12 |
| 220.82.171.129 | |
| 221.153.60.141 | 221.144.0.0/12 |
| 222.97.10.66 | 222.96.0.0/12 |
Авг
2011
Как подружить bzr с самоподписанными SSL-сертификатами
Симптом: при выполнении команды вида
bzr выдаёт ошибку:
bzr: ERROR: Connection error: curl connection error (server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none)
on https://example.com/.bzr/smart
Есть два метода исправления проблемы. Далее »
Автор: Wandering Soul, опубликовано в: Администрирование, комментариев: нетИюл
2011
Интеграция LFD с blocklist.de
LFD (Login Failure Daemon) — модуль замечательного пакета CSF (ConfigServer Security and Firewall), отвечающий за анализ системных журналов и блокировку потенциальных взломщиков.
CSF умеет отправлять отчёты об атаках в формате X-ARF (в виде, пригодном для перенаправления отчёта в отдел жалоб и нарушений провайдера атакующего). Но иногда хочется сделать добро окружающим людям — чем быстрее узнают о потенциальном взломщике и заблокируют его IP-адрес, тем меньше вреда он успеет нанести.
Один из сервисов, занимающихся публикацией IP-адресов всяких взломщиков — это Blocklist.de. Этот сервис очень хорошо интегрируется с Fail2Ban, но существует и возможность посылать отчёты и без Fail2Ban. Далее »
Автор: Wandering Soul, опубликовано в: Администрирование, Безопасность, комментариев: нетИюл
2011
Скрипт для извлечения контактной информации из Abusix
Когда малолетние скрипт-киддисы и другие нехорошие личности совсем достают попытками подбора пароля к SSH, сканированием портов и прочей гадостью, бывает совсем неплохо сообщить об их действиях их провайдеру. Здесь возникает вопрос получения контактной информации технической поддержки провайдера/хостера нарушителя по его IP-адресу. И хотя данная информация является общедоступной (её можно извлечь из данных whois), на практике автоматизировать разбор записей whois не всегда тривиально (abuse-контакт может находиться как в e-mail, remarks, так и в любой другой секции, причём правильным может быть только один адрес).
К счастью, есть два сервиса, позволяющие получить контактную информацию техподдержки по IP-адресу или имени домена:
- Network Abuse Clearinghouse — определение контактной информации по домену нарушителя. В основном используется для сообщений о спаме. Проблема в том, что если контактный адрес не зарегистрирован, будут предложены контакты
abuse@и/илиpostmaster@, что не эффективно, если нарушителю принадлежит весь домен. - Abuse Contact DB — определение контактной информации по IP-адресу нарушителя. Данный сервис «назначает ответственным» не владельца домена, соответствующего IP-адресу, а его провайдера или хостера, что во многих случаях предпочтительнее.
Оба сервиса поддерживают DNS-запросы в стиле RHSBL (abuse.net) и DNSBL (abusix.org). Далее »
Автор: Vladimir, опубликовано в: Всё подряд, комментариев: 1Июн
2011
php: symbol zlibVersion, version libmysqlclient_16 not defined in in file libmysqlclient.so.16 with link time reference
Ситуация: имеется сервер на CentOS с установленной CPanel. PHP в случайные моменты времени завершается с ошибкой вида
php: relocation error: php: symbol zlibVersion, version libmysqlclient_16 not defined in in file libmysqlclient.so.16 with link time reference
Вместо zlibVersion может быть другое имя, например crc32.
Из-за CPanel/WHM возможности ограничены опциями, предоставляемыми EasyApache — обновить MySQL/PHP штатными средствами (например, через yum) не представляется возможным из-за риска сломать CPanel. Далее »
Май
2011


Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

