BON пишет:igrok54, если как ты говоришь любое письмо, то тогда в этом письме можно будет отослать любой джава скрипт который выполнится при прочтении письма. ТАк же получается?
Да я именно об этом и говорю. Получается любой же зарегенный юзер имеет право отправить через форум другому юзеру письмо, содержащее html-код, который может быть вредоносным. А потом все шишки админу сайта, через который заслали...
Надо какой-то фильтр добавить, проверку, на то, что в данном типе писем разрешен html.
Можно добавить еще один параметр при отправке письма (их было 5, добавляем шестую переменную $list[5] (отсчет с 0, а не с 1) и пропишем условие, что если эта шестая переменная в аргументах получена и она равна TRUE, то html в этом типе писем разрешен...
Не проверял, но должно работать:
CODE:function _SendMail($list) {
// До формирования письма проверим и установим тип письма:
if(isset($list[5]) && $list[5]===TRUE) {$mailtype='text/html';} // Если разрешен в данном письме html
else {$mailtype='text/plain';}
// Затем формируем заголовки письма подставляя определенную ранее переменную с типом письма:
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: ".$mailtype."; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";
Тогда в командах на отправку писем, где html разрешаем, нужно будет добавить этот шестой аргумент, дописав в их конец еще один: TRUE
Для случая Nikela - это изменения еще в файле register.php
Номера строк по сборке Электрона, у Вас могу отличаться! Но где-то рядом...
Строку 186:
CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->input['emailaddress'],$subject,$email);
Заменить на:CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->input['emailaddress'],$subject,$email, TRUE);
Строку 248:
CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->input['emailaddress'],$fm->LANG['RegThanks'],$email);
Заменить на:CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->input['emailaddress'],$fm->LANG['RegThanks'],$email, TRUE);
Две одинаковых строки 260 и 358:
CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->exbb['adminemail'],$subject,$email);
Каждую заменить на:CODE:$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$fm->exbb['adminemail'],$subject,$email, TRUE); |