Взломали AjaxSnippet

Ломанули у меня дополнение AjaxSnippet, как ломанули фиг его знает.
Вот думаю как сделали, сайт несколько лет без проблем, а тут только поставил дополнение и на тебе.

/** @var array $scriptProperties */
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {return;}

if (empty($snippet)) {return 'You must specify snippet!';}
elseif (!$modx->getCount('modSnippet', array('name' => $snippet))) {return 'Could not found snippet "'.$snippet.'"';}

/** @var xPDOFileCache $cache */
$cache = $modx->cacheManager;
$cache_key = '/ajaxsnippet/';
$key = sha1(serialize($scriptProperties));
$modx->lexicon->load('ajaxsnippet:default');

Тут вот дописали переменную $spinner, я сократил поскольку большая.
Ну и по ходу дописали вызов скрипта после событий
$spinner = 'data:image/gif;base64,R0lGODlhF4F25rAQEzC4m0EBy8b+7h5KMzdAps+FEC45NuInXQ0KfxtwphHdGnxEyuUe/U6CWwbwTMTwRJuOCmir8MBAyePboS3az8hAgozGL0ODU/T7i/okszoYkzfCv38HyUsf/v0WXhtXhAAOw==';

if (!empty($wrapper)) {$wrapper = $modx->getChunk($wrapper);}
if (empty($as_mode)) {$as_mode = 'OnLoad';}
if (empty($as_target)) {$as_target = '#'.$key;}

$script = '
$.post("'.$modx->context->makeUrl($modx->resource->id, '', 'full').'", {as_action: "'.$key.'"}, function(response) {
	if (typeof response.output !== "undefined") {
		$("'.$as_target.'").html(response.output);
		spinner.remove();
		$(document).trigger("as_complete", response);
	}
}, "json");';
$cache->set($cache_key . $key, $scriptProperties);

$output = '';
switch (strtolower($as_mode)) {
	case 'none':
		if (empty($wrapper)) {$wrapper = '<div id="[[+key]]" class="ajax-snippet"></div>';}
		$output = str_replace('[[+key]]', $key, $wrapper);
		break;

	case 'onclick':
		if (empty($wrapper)) {$wrapper = '<div id="[[+key]]" class="ajax-snippet">
			<a href="#" class="as_trigger">[[+trigger]]</a>
			<img src="'.$spinner.'" class="as_spinner" style="width:32px;margin:auto;display:none;">
		</div>';}
		if (empty($as_trigger)) {
			$as_trigger = $modx->lexicon('as_trigger');
		}

		$modx->regClientScript(preg_replace('/(\t|\n)/', '','
		<script type="text/javascript">
			$(document).on("click", ".as_trigger", function(e) {
				var spinner = $(this).parent().find(".as_spinner");
				spinner.css("display","block");
				$(this).remove();
				'.$script.'
				return false;
			});
		</script>'), true);
		$output = str_replace(array('[[+key]]','[[+trigger]]'), array($key, $as_trigger), $wrapper);
		break;

	case 'onload':
	default:
		if (empty($wrapper)) {$wrapper = '<div id="[[+key]]" class="ajax-snippet">
			<img src="'.$spinner.'" class="as_spinner" style="width:32px;margin:auto;display:block;">
		</div>';}

		$modx->regClientScript(preg_replace('/(\t|\n)/', '','
		<script type="text/javascript">
			$(document).ready(function() {
				var spinner = $(this).parent().find(".as_spinner");
				'.$script.'
			});
		</script>'), true);
		$output = str_replace('[[+key]]', $key, $wrapper);
}

return $output;
Сергей Росоловский
21 апреля 2016, 11:31
modx.pro
1 864
-2

Комментарии: 6

Василий Наумкин
21 апреля 2016, 14:41
+1
Переменная $spinner — это картинка, закодированная в base64.

Видимо исходники на GitHub тоже «ломанули».
    Сергей Росоловский
    21 апреля 2016, 14:48
    0
    :) мдя, интересно вышло, просто у меня iframe поперли при открытии страницы, и я вот просматривая исходник страницы выходит лоханулся.
      Василий Наумкин
      21 апреля 2016, 15:55
      0
      Я на нескольких сайтах видел такую гадость через плагин на событие рендера страниц. Посмотри, нет ли незнакомого плагина в системе?
      Andrei
      08 сентября 2016, 09:37
      0
      Как вы решили проблему? Обнаружил у себя точно такую же бяку.
      UPD/ Я кажется понял)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6