
Дорогие друзья,
Последнее время стали поступать сообщения о том что сайты подвергаются массовой рассылке персональных сообщений при помощи спам программ. В новой версии скрипта будут предусмотрены множественные алгоритмы защиты, позволяющие полностью предотвратить данные действия. В текущей версии скрипта существуют два механизма защиты: первый, это включение в настройках групп каптчи для комментариев и персональных сообщений, данный механизм гарантирует полную защиту от имеющихся на данный момент спам программ, второй, это более радикальный способ - отключение в настройках групп разрешение на использование персональных сообщений. Данные методы безусловно обладают своими недостатками, так например многие не хотят включать каптчу для комментариев, хотя мы рекомендуем ее включать для обычных посетителей, т.к. это очень хороший механизм от спама в комментариях.
Откройте файл engine/modules/pm.php и найдите:
$stop = "";
добавьте ниже
$id_key = $_POST[$_SESSION['id_key']];
if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
далее в этом файле найдите строчки:
if( $config['allow_comments_wysiwyg'] == "yes" ) $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="document.getElementById('comments').value = tinyMCE.get('comments').getContent(); if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('comments').value == ''){alert('{$lang['comm_req_f']}');return false}" action="">n" . $tpl->copy_template . "<input name="send" type="hidden" value="send" /></form>";
else $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('dle-comments-form').comments.value == ''){alert('{$lang['comm_req_f']}');return false}" action="">n" . $tpl->copy_template . "<input name="send" type="hidden" value="send" /></form>";
else $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('dle-comments-form').comments.value == ''){alert('{$lang['comm_req_f']}');return false}" action="">n" . $tpl->copy_template . "<input name="send" type="hidden" value="send" /></form>";
замените их на:
$salt = "abchefghjkmnpqrstuvwxyz";
$random_key = "";
for($i = 0; $i < 8; $i ++) {
$random_key .= $salt{rand( 0, 23 )};
}
@session_register( 'id_key' );
$_SESSION['id_key'] = $random_key;
$random_key = "<input name="{$random_key}" type="hidden" value="{$dle_login_hash}" />";
if( $config['allow_comments_wysiwyg'] == "yes" ) $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="document.getElementById('comments').value = tinyMCE.get('comments').getContent(); if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('comments').value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}" action="">n" . $tpl->copy_template . "{$random_key}<input name="send" type="hidden" value="send" /></form>";
else $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('dle-comments-form').comments.value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}" action="">n" . $tpl->copy_template . "{$random_key}<input name="send" type="hidden" value="send" /></form>";
$random_key = "";
for($i = 0; $i < 8; $i ++) {
$random_key .= $salt{rand( 0, 23 )};
}
@session_register( 'id_key' );
$_SESSION['id_key'] = $random_key;
$random_key = "<input name="{$random_key}" type="hidden" value="{$dle_login_hash}" />";
if( $config['allow_comments_wysiwyg'] == "yes" ) $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="document.getElementById('comments').value = tinyMCE.get('comments').getContent(); if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('comments').value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}" action="">n" . $tpl->copy_template . "{$random_key}<input name="send" type="hidden" value="send" /></form>";
else $tpl->copy_template = "<form method="post" name="dle-comments-form" id="dle-comments-form" onsubmit="if(document.getElementById('dle-comments-form').name.value == '' || document.getElementById('dle-comments-form').subj.value == '' || document.getElementById('dle-comments-form').comments.value == ''){DLEalert('{$lang['comm_req_f']}', dle_info);return false}" action="">n" . $tpl->copy_template . "{$random_key}<input name="send" type="hidden" value="send" /></form>";


