Top.Mail.Ru
? ?
Кот канарский полосатый толстый

r3code, posts by tag: php - LiveJournal

Задержись в реальности!

Entries by tag: php

Защита от выполнения вредоносных PHP-скриптов на сайте
Серьёзно о главном
Imager3code
Для защиты:

  1. настроим доступ в htaccess;

  2. запретим опасные команды в PHP.ini;

  3. запишем нежалательные запросы для анализа;

  4. сбросим атакующему жирную свинью.

Read more...Collapse )

Как узнать, что ваш PHP сайт был взломан (конспект)
Серьёзно о главном
Imager3code
  1. Проверить логи доступа и выяснить источник.
  2.  Выявить вредоносные файлы PHP на сервере.

1. Проверить логи доступа, пример подозрительного лога:

IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0" IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0" 

Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные. 

В этом запросе чаще всего и передается код вредоноса, потом к нему делается запрос и вредонос делает свое дело.

Read more...Collapse )

Contao CMS: уязвимости, эксплоит на unserialize()
Серьёзно о главном
Imager3code
Contao CMS <= 3.2.4 неверно проверяет переданные значения в некоторых местах, где они прямо передаются PHP функции unserialize. Исправлено в Contao 3.2.5.
Пользовательский ввод переданный напрямую в unserialize(), возможно приводит к исполнению кода.
Источник: http://0day.today/exploit/21858

Timeweb: скрипт для подсчета занятого места по сайтам
Codded
Imager3code
На виртуальном хостинге в одном аккаунте может быть несколько сайтов, удобно знать сколько места занимает каждый из них.
Сделал для себя инструмент, позволяющий мне это сообщать. Я получаю письма раз в месяц и знаю, сколько на каком сайте места занято/свободно. Задание настроено в панели управления через cron.
Я считаю, что все сайты равноправны потому лимит для каждого вычисляется просто делением общего объема на максимальное число сайтов в тарифе.
Иногда мне надо посмотреть сейчас сколько места занимают сайта, тогда я захожу по служебной ссылке и смотрю отчет онлайн. Для ограничения доступа я положил скрипт в отдельный каталог и закрыл на пароль, чтобы не смотрели все подряд.

Вот ссылка на сам скрипт https://github.com/r3code/php-du-notifier, можно свободно его брать и использовать.

PHP: получение стоимости отправки посылки с сайта pochta.ru
Codded
Imager3code
Image
Сайт почты http://pochta.ru обновился, но API у него сразу не появлся от того.
Изучил работу сайта и написал свою реализацию.

Это частный случай для доставки посылки наземным транспортом.
Работает до обновления pochta.ru серверного кода, иногда там изменяются форматы ответов.
Для поддержания кода в рабочем состоянии я использую периодические сборки с автоматизированными тестами при помощи travis-ci.

Я успешно использую этот код для автоматического расчета стоимости доставки посылки в интернет магазине на основе HostCMS 6. Стоимость добавляется автоматически к заказу системой - это сильно упростило жизь операторам.

Примеры и исходный код: https://github.com/r3code/pochtaru-parcel-cost

Состояние билда: https://travis-ci.org/r3code/pochtaru-parcel-cost

Подготовка PHP кода к локализации в Poedit
Кот канарский полосатый толстый
Imager3code
У Poedit есть одна особенность, при считывании строк для локализции из исходного кода он вставляет строку с теми символами, которые использованы в исходнике.
Наверно это правильно. Но при переводе жутко некрасиво выглядит.
Например, строка
$logger->addMsg(sprintf(_('%sDemonstration Mode%s is on -- no Emails will actually
            be sent. This is good for testing settings.'),
            '<a href="'.Pommo::$_baseUrl.'setup_configure.php#mailings">',
            '</a>'));
Будет определена как
%sDemonstration Mode%s is on -- no Emails will actually\n
\t\t\tbe sent. This is good for testing settings.

Виджу лишние табуляции и перевод строки. В реальном итерфейсе это одна строка без табуляций и переводов.
Если для кода это не проблема, то для локализации несовпадение одного символа приведет к невозможности перевода данной строки.
У меня так и получилось - я переводил строки, но удалял все лишние табуляции, в итоге часть строк не локализуется автоматически.
Потому лучше привести PHP код строк в нормальный вид без табуляций.
Вариант 1. Удалить табуляцю и сделать строки в одну линию без переводов строки и табуляций.
Вариант 2. Соединить строки разделенные переводом строки с помощью оператора конкатенации .
Поиск строк разорванный по середине переводом строки можно выполнить регулярным выражеием ^.*_\('[^']*$ в Notepad++
Затем приветси строки к читаемому виду способом 1 или 2, и обновить PO файл из исходника.

PHP скрипт для отображения данных об использовании места на хостинге
Кот канарский полосатый толстый
Imager3code
Скрипт на PHP работает только на Linux, т.к. использует в работе команду 'du'.
Отображает данные о занимаемом размере для указанных папок.
Выводит общий размер файлов на диске и размер занимаемый каждой папкой сайта в МБ.
Для полноты подстчета осталось добавить подсчет размера баз данных (пока не делал).

Код скрипта...Collapse )

HostCms. Фильтр количество товаров на страницу 10, 20, 30, Все
Кот канарский полосатый толстый
Imager3code
Редактируем типовую динамическую php-страницу "Интернет-магазин"
После блока
/* Число элементов на странице */
$on_page = to_int($_GET['on_page'])


Добавляем код
// Вывод всех товаров на странице
                if ($on_page == -1) {
                  $show_all_pages = 9999;
                  $param['items_on_page'] = $show_all_pages;
                  $external_propertys['on_page'] = -1;
                  $external_propertys['apply_filter'] = true;
                }


Изменяем XSL шаблон "МагазинКаталогТоваров" для вывода дополнительного пункта "Все".
Новый шаблон выбирает установленный ранее выбор.
Найдем шаблон "for_on_page" и заменяем этим
<!-- Цикл с шагом 10 для select'a количества элементов на страницу -->
	<xsl:template name="for_on_page">
		<xsl:param name="i" select="0" />
		<xsl:param name="n" />
 
		<option value="{$i}">
 
			<xsl:if test="($i = /shop/on_page) or ($i = /shop/items_on_page)">
				<xsl:attribute name="selected">selected
				</xsl:attribute>
			</xsl:if>
			<xsl:value-of select="$i" />
		</option>
 
		<xsl:if test="$n &gt; $i">
			<!-- Рекурсивный вызов шаблона -->
			<xsl:call-template name="for_on_page">
				<xsl:with-param name="i" select="$i + 10" />
				<xsl:with-param name="n" select="$n" />
			</xsl:call-template>
		</xsl:if>
		<xsl:if test="$n = $i">
			<option value="-1">
				<xsl:if test="/shop/on_page = -1">
					<xsl:attribute name="selected">selected
					</xsl:attribute>
				</xsl:if>
			Все</option>
		</xsl:if>
	</xsl:template>

Форма отправки почты с сайта для HostCms.Халява
Кот канарский полосатый толстый
Imager3code
Read more...Collapse )
Источник http://www.hostcms.ru/forums/17/981/

Image