Перейти к контенту

Журнал - Дневник


Рекомендуемые сообщения

Кто-нибудь готов присоединиться к разработке? Поднимите руки, но не все, а только те, кто может реально помочь и понимает задачу!

это наверно ко мне)

какова проблема и где надо внести защиту?

 

Ну я вроде бы описывал уже где проблема и в чем заключается доработка. :D

 

Функция function ValidateForm() есть и onsubmit='return ValidateForm() уже есть в skin_q_reply.php их надо просто усложнить и ввести проверку на физическое нажатие кнопки отправить. Код дается для примера, чтобы мысль пошла работать. ;)

 

var dl = document.getElementById('feek');
if(dl) 
{ 
dl.value = flood_bot;		
}

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 1k
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

а мы до сих пор сидим со своими журналами без смайлов,хотя тех поддержка вроде бы занялась этим,но что-то уже 3 дня молчание.

Кто-нибудь прояснит наш вопрос?

3912-EDHL-3959

Ссылка на комментарий
Поделиться на других сайтах

2 rfgbnjirf

никто Вам здесь эти вопросы пояснять не будет, для этого есть клиент центр, не засоряйте лишний раз топик.

Ссылка на комментарий
Поделиться на других сайтах

интересное кино. В клиент центре не отвечают, так и тут нельзя??

Что значит не засорять??Форум для того и есть,чтоб спрашивать и получать ответ.

Ссылка на комментарий
Поделиться на других сайтах

Проверка физического клика по кнопке и запрет постинга комментариев без поддержки JS в браузере.

(помогает в борьбе с роботизированными ответами, даже в случае с выключенным кодом безопасности)

 

Открыть skin_q_reply.php

 

Редактировать function ValidateForm()

 

function ValidateForm() {

	var m = /^s*(.+?)s*$/im;
	var msg = document.REPLIER.Post.value.match(m);
   // начало проверки нажатия кнопки
	var form_bool = document.getElementById('REPLIER_action_bool').value;
   // конец
	if (msg != null) {
			MessageLength = msg[1].length;
	} else {
			MessageLength = 0;
	}
	errors = "";
	// начало вставки
	if (!form_bool*1) {
		   errors = "{$ibforums->lang['js_no_click']}"; //в lang файл добавить перевод на ваше усмотрение
	}
	// конец вставки
	if (skip_check != 0) {
			document.REPLIER.submit.disabled = true;
			return true;
	}
	if (MessageLength < 2) {
			 errors = "{$ibforums->lang['js_no_message']}";
	}
	if (MessageMax !=0) {
			if (MessageLength > MessageMax) {
					errors = "{$ibforums->lang['js_max_length']} " + MessageMax + " {$ibforums->lang['js_characters']}. {$ibforums->lang['js_current']}: " + MessageLength;
			}
	}
	if (errors != "") {
			alert(errors);
			return false;
	} else {
			document.REPLIER.submit.disabled = true;
			return true;
	}
}

 

Добавить после еще одну:

 

function ReplaseHref() {
 var act = document.REPLIER.action;
 document.getElementById('REPLIER_action_bool').value = '1';
 act = document.getElementById('REPLIER_action').value;
 document.REPLIER.Post2.value = document.REPLIER.Post.value;
}

 

В самой форме (form) action сделать пустым:

action=""

 

Добавить 2 скрытых поля:

<input type='hidden' value='{$journal->base_url}' id='REPLIER_action' />
<input type='hidden' value='0' id='REPLIER_action_bool' />

 

Тег <textarea>, содержащий само сообщение, заменить на два нижеследующих:

 

<textarea class='input' cols='70' rows='15' name='Post' tabindex='3' style='width:99%' >{$data['post']}</textarea><textarea name='Post2' style='display:none' >[<_empty>]</textarea>

 

В кнопку отправки (input submit) сообщения чуть ниже добавить:

 

onclick='ReplaseHref()'

 

--------------------------------------------------------------------------------

Открыть comment_new.php

 

Найти:

// Check post

 

if (!$skip_check_error)

{

 

Добавить иф:

if ($_POST['Post2'] == "[<_empty>]")
					{
					header ("Location: http://URL/journal.php"); // куда послать бота, куда-нибудь подальше! :)
					exit();
					}

Ссылка на комментарий
Поделиться на других сайтах

о ужос

чем вам не нравится капча Гаррета??

фтопку этот яваскрипт, кросбраузерность важнее

 

я вам скажу, до установки капчи Гаррета у меня был последний зарегестрированный ид ~ 11500

за 4 месяца существования форума

после установки прошло 5 месяцев

последний зарег ид ~ 12000

в таблице пользователей 7000 записей(многие удалены)

из них при запросе тех, у кого > 0 сообщений выбирается 600 настоящих

пусть примерно еще 1000 настоящих людей рид онли

 

выводы?

 

усиленно рекомендую капчу Гаррета

Ссылка на комментарий
Поделиться на других сайтах

чем вам не нравится капча Гаррета??

 

Собственно нет возможности сейчас оценить чем она не нравится, т.к. не понимаю о чем Вы :D Мы использовали Captcha, которая приводилась тут, в топе. Изначально она работала БЕЗ JS, JS проверяет физический клик на кнопку, что позволяет нам отрубать ботов как нефиг делать. Надеюсь как, не надо объяснять. Решение, возможно, может быть заменено альтернативой более гибкой и короткой, но пока на скорость не влияет, будем проводить ряд тестов.

 

А насчет кроссбраузерности вообще не в понятках, Вы, уважаемый, о чем?

Данная телега прокатывает и в Опере и в ФФ и в дебильном ИЕ. Без Явы не даст коммент запостить? Ну простите, смайлы, бб-коды, сообщения об ошибках и прочие полезные функции без нее тоже не работают. Да и у многих ли отключен JS в браузере? ;)

 

П.С. Впрочем, можно оставить только на проверку события по кнопке, а проверку на анализ Явы опустить. Но это же по вкусу - там ничего сложного, пару строчек выкинуть.

Ссылка на комментарий
Поделиться на других сайтах

о ужос

чем вам не нравится капча Гаррета??

фтопку этот яваскрипт, кросбраузерность важнее

.......

выводы?

усиленно рекомендую капчу Гаррета

 

Начну издалека Борьба со спамом на форуме. По идее после этого ответа вы должны быть в курсе чего можно добиться при использовании javascript.

 

В данной теме вы видимо не читали Журнал - Дневник код безопасности и это сообщение тоже Журнал - Дневник #564

 

ValidateForm и ReplaceHref - это дополнительный довесок, если кому-то из админов надо спать спокойнее и не беспокоиться за всяких начинающих "хакеров", которые любят пускать спам-ботов.

О том зачем довесок нужен я вроде бы писал. Вот тут даже есть в некотором смысле похожая тема о том как js нам жить помогает JS проверка регистрации ботов.

Идеи такие уже давно были, но они не относились к дневникам, я там приводил большое кол-во ссылок на похожие темы.

Речь шла о комментариях в дневниках и их безопасном использовании от имени гостей, а не о регистрациях на форуме. Это все же очень разные вещи.

 

Что такое кроссбраузерность я знаю, поэтому тот, кто выключил поддержку js или у кого ее нет, тот сам себе злобный буратино (у меня даже в телефоне она есть и все прекрасно работает)! Можно и без этого фикса использовать код безопасности, эффект правда похуже, если код слишком простой и обработки session не вводить, которые я описал как экспериментальные и возможно слишком сложные.

 

Перед тем как ставить себе фикс с javascript, надо поставить код безопасности на отправку комментариев гостями. Без кода безопасности данная доработка не рекомендуется к применению на 100%.

 

Если разбираетесь в коде, то дайте советы по обработке session в моем посте про код безопасности, т.к. мне они кажутся слишком замороченными и я чувствую что можно сделать проще, но нет времени заняться этим. Также буду рад услышать реальные советы по доработке данного метода отслеживания ботов. Мы написали в некотором смысле черновик, по которому уже можно выстраивать идеи дальше.

Ссылка на комментарий
Поделиться на других сайтах

насчет регистрации и проч доводов

прикрепляем картинку с математическим примером рядом с формой для отправки сообщения и по отправке проверяем правильность ответа

( Продвинутый код безопасности 3.1 )

session - туфта

 

могу сделать, так как планирую использовать эти дневники

Ссылка на комментарий
Поделиться на других сайтах

насчет регистрации и проч доводов

прикрепляем картинку с математическим примером рядом с формой для отправки сообщения и по отправке проверяем правильность ответа

( Продвинутый код безопасности 3.1 )

session - туфта

 

могу сделать, так как планирую использовать эти дневники

 

1. Причем тут регистрация на форуме? Напомню еще раз, что здесь не обсуждают как выглядит код безопасности для регистрации на форуме. Также напоминаю, что речь идет о комментариях гостей в дневниках и нигде более.

 

2. Почему session - туфта?

 

3. Уже сделано и работает.

 

Ссылки указанные в моем предылущем сообщении посетили?

Ссылка на комментарий
Поделиться на других сайтах

решил редактировать темплейты через админку и понял - мертвое это дело))

сейчас скажу как лечить строку параметров

 

потому что сессии туфта

не хотите - как хотите)

Ссылка на комментарий
Поделиться на других сайтах

потому что сессии туфта

Туфта как-то иначе переводится на русский язык? :D

не хотите - как хотите)

Чего я не хочу и чего я хочу не так важно.

Вопросы и советы в сообщениях, ссылки на которые я дал, вполне конкретные.

 

Переформулируя свои же вопросы поставлю новый вопрос иначе:

 

Если вы читали модификацию с кодом безопасности для гостей, комментирующих дневники, то бы ли ли недочеты по коду и что бы можно было сделать иначе именно в этой модификации?

 

Если вы читали модификацию с проверкой js и onclick в браузере при постинге комментария, то были ли какие-то новые идеи на эту тему?

 

сейчас скажу как лечить строку параметров

Каких параметров и от чего лечить?

Ссылка на комментарий
Поделиться на других сайтах

на эту тему даже не хочу думать

 

параметры

http://www.ibresource.ru/forums/index.php?...st&p=249013

 

Конструктивно! Я все понял. :D

А ошибки с параметрами на 100% лечатся выпрямлением рук редактирующего.

Просто тупо редактировать код без знаний синтаксиса - это рубить сук, на котором сидишь.

Это для случаев, если вдруг, где-то у кого-то "Parse error: parse error, unexpected ')' in вываливается от ручного вмешательства в работающий код.

 

Новый фикс для друзей и соавторов!

 

Проблема:

Есть в дневниках такая интересная ситуация, когда человек, находящийся в списке друзей даже не догадывается что запись, в которую он отвечает, имеет статус закрытой для всех и видимой только для него.

 

Дело в том, что по логике от статуса записи может изменяться ответ человека из списка друзей.

Если он не догадывается, что запись закрыта, то он считает ее публично доступной, а это значит что может не досказать что-то в своем ответе.

 

Вобщем ситуацию как мог объяснил.

 

Решение:

У нас есть данная доработка, благодаря чему человек из списка друзей / соавторов четко и ясно видит статус записи в виде дополнительного информационного блока. Кому потребуется - стучите пока в ЛС, т.к. в виде change log ее уже нет, она вшита в код и надо вытаскивать по памяти.

Ссылка на комментарий
Поделиться на других сайтах

Просто тупо редактировать код без знаний синтаксиса - это рубить сук, на котором сидишь.

Это для случаев, если вдруг, где-то у кого-то "Parse error: parse error, unexpected ')' in вываливается от ручного вмешательства в работающий код.

видео с экрана снять?

объясни тогда куда пропадают "" и скажи, надо ли мне каждый раз их заново выставлять?

 

 

БОЛЕЕ того!

если я использую не одну переменную, все кроме первой куда-то исчезают

Ссылка на комментарий
Поделиться на других сайтах

видео с экрана снять?

Зачем мне видео с экрана? Я сам что ли первый день мод использую?

Ошибки в дистрибутивах нет, но есть ошибки из-за ручного вмешательства в код или из-за неправильно настроенного сервера.

 

У меня все редактируется и через админку и прямо в файлах. Никакой разницы при этом нет.

Ну если не получается через админку, то делай напрямую. То ли мне повезло, то ли еще что-то, но я ни разу не натыкался на подобный баг, хотя шаблоны прочесывал вдоль и поперек не одну сотню раз всеми возможными способами.

 

С БД можно повозиться, вдруг поможет. Шаблоны надо включить из PHP файлов использовать, тоже помогает, судя по откликам.

Ссылка на комментарий
Поделиться на других сайтах

убедительная просьба проверить вывод двух и более переменных в строке "Переменные" при редактировании шаблона прежде, чем отвечать

 

кривой сервер не только у меня, и если я знаю в чем проблема, не факт что пользователи, которые задают такие вопросы: Сколько их, тоже об этом знают

 

поэтому если функция есть, она должна работать

 

фикс уже готов, на работу "нормальных" серверов он влиять не должен, и если Вам лично он до лампочки, всегда найдутся те, кому он может понадобится, потому что не все админы могут нормально ориентироватся в программировании, но некоторые могут ориентироватся в логистике куда лучше нашего

 

файл ./sources/admin/ad_journal_tpl.php

найти

			$r['param'] = str_replace("'", "\'", $r['param'] );
		$r['param'] = str_replace('"', "\"", $r['param'] );

		$this->base->html .= $this->base->adskin->add_td_row( array("Переменные: ".$this->base->adskin->form_input('tplparam_id'.$r['id'], $r['param'], 'text', '', '90'),
										 )	  );

заменить на

			$r['param'] = str_replace("'", '"', $r['param'] );
		$r['param'] = "Переменные: <input type='text' name='tplparam_id".$r['id']."' value='".$r['param']."' size='90' class='textinput'>";

		$this->base->html .= $this->base->adskin->add_td_row( array($r['param'],
										 )	  );

этим мы к сожаленю лишаемся возможности использовать в переменных одинарные кавычки, но у нас не теряются переменные

далее не обязательный пункт

найти

$param = $this->base->std->txt_stripslashes($_POST['tplparam_id'.$value]);

добавить после

				if(strrpos($param,'=')==strlen($param)-1)
			{
				$param .= '""';
			}
			if($aq = strpos($param,'= '))
			{
				$param = substr($param,0,$aq+1).'""'.substr($param,$aq+1,strlen($param)-1);
			}

этим мы добавляем на всякий случай к переменным кавычки, если они по-каким то причинам не добавлены

Ссылка на комментарий
Поделиться на других сайтах

но некоторые могут ориентироватся в логистике куда лучше нашего

Логистика - это совсем другая область знаний. :D Я прекрасно понимаю о чем идет речь, специально протестировал еще до этого фикса Skin_q_reply -> upload_field

 

Во всех направлениях все прекрасно работает. Все зависит в данной ситуации от настроек сервера.

 

http://bbs.krasnogorsk.ru/news/param.gif

Ссылка на комментарий
Поделиться на других сайтах

после скриншота стало гораздо яснее...

похоже не на проблемы сервера

какова у Вас функция form_input в ./sources/lib/admin_skin.php?

 

в 21х наверняка другая просто)))

Ссылка на комментарий
Поделиться на других сайтах

addslashes() экранирует спецсимволы в строке.

stripslashes() используется, например, когда директива конфигурации magic_quotes_gpc включена (она включена по умолчанию), и экранирование символов не требуется.

get_magic_quotes_gpc возвращает текущую конфигурацию magic_quotes_gpc (0, 1).

 

ИМХО вся возня вокруг этого складывается.

И вот зная это, надо было проверить, включены ли “магические кавычки”, и только после этого применять addslashes(). К слову, я бы предпочел использовать mysql_real_escape_string() вместо кавычек.

Ссылка на комментарий
Поделиться на других сайтах

нет

проблема в функции из admin_skin.php

	function form_input($name, $value="", $type='text', $js="", $size="30")
{
	if ($js != "")
	{
		$js = ' '.$js.' ';
	}

	return "<input type='$type' name='$name' value=\"$value\" size='$size'".$js." class='textinput'>";
}

value здесь возвращается в ""

тоесть если мы имеем переменную

$data=""

то получается такой хтмл код:

value="$data="""

вторая кавычка закрывает все, и остальное уходит в мусор

если более 1 переменной, то в мусор уходят и следующие за этим символы:

value="$data="",$info="""

получаем

value="$data=" - рабочий код

",$info=""" - мусор

 

вопрос не при записи в базу, вопрос при редактировании, adslashes работает

Ссылка на комментарий
Поделиться на других сайтах

это естественно

но когда я напишу

$data='',$info=''

:D

 

 

value='$data='',$info='''

value='$data=' - код

',$info='' - мусор

 

так что в моем фиксе выбраны определенные кавычки, другими пришлось пожертвовать

Ссылка на комментарий
Поделиться на других сайтах

это естественно

но когда я напишу

$data='',$info=''

:D

Это уже частный случай, хотя и с этим работать должно.

 

$r['param'] = str_replace("'", "\'", $r['param'] ); есть же эта строка, вот в ней и закрутить одинарную кавычку как надо.

 

Смотри http://bbs.krasnogorsk.ru/news/quotes.gif это результат работы в админке, все заменил, все работает.

 

Говорю же что проблема не в mJournal, а в IPB возможно или где-то еще .... но код самих блогов многократно прочитывался от и до. По сути там нигде одинарные кавычки не используются, поэтому особенной проблемы это не представляет. Ставишь двойные так же как делал автор во всех переменных.

 

Я бы на твоем месте назвал фикс "Использование одинарной кавычки в шаблонах в поле для переменных в админке".

 

А value заменить, если что-то не так пойдет, намного проще.

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.