Здравствуйте
--
Возможно кто-то поймёт меня не правильно, или оценит мою задумку, или подобное уже делалось. Хочу создать фильтр для спама со своего сайта. Принцип такой: Делал валидацию для проверки правильности указанного криптокошелька, через API - всё работает, но не сразу, а после нажатия кнопки submit, возможно сделал что-то не правильно, так как стандартная валидация срабатывает сразу, как только ввёл или не ввёл информацию в input. Раз свои функции с валидацией можно делать на Yii, и они работают не зависимо от того, до или после отправки формы, то можно заморочится и со стоп словами, которые обычно пишут спамеры в сообщениях сайта. Капча от google не поможет, просто капча, да и какой нужно писать паттерн, чтобы поле сообщения отлавливало подозрительные слова?
Поэтому нужно создать массив со стоп словами, по аналогии с валидатором нецензурной брани. Но последний валидатор создать проще. Почему? Потому что там очевидные слова, которые не спутаешь с культурной речью.
В чём сложность личного анти-спам валидатора. К примеру, я вставил в массив слово "купить". И представим себе вымышленного дядю Сема, который регулярно бомбардирует сайт сообщениями "вы можете купить швейцарские часы, только у нас, со скидкой 50%". Чтобы не отвлекаться на спам, и не вести анализ и удаление писем, проще создать валидатор, который не предупреждает, а наоборот, говорит, что отправил, притупив бдительность злоумышленника, а на деле письмо не отправляется, оно сразу удаляется, до того как оказаться на почте. Но приходит Петя, и пишет. "Я пытал купить у вас настольную лампу, но она не добавилась в корзину, так и не успел преобрести со скидкой". Это сообщение не только не даёт возможности дать подзатыльника нерадивому программисту, который в тот злополучный день не доделал корзину, но и потерял клиента, потому что валидатор удалил это письмо до того как его прочитала администрация сайта.
Писать бота? Или же всё таки создать очевидные стоп-слова, которые скорее словосочетания, которые ну никак не вяжутся ни с деятельностью магазина, не с деятельностью сайта. И тогда удалять их до того как послание благополучно залетить на почту. Сейчас может быть кто-то давится от смеха, но оценив масштабы, поясню, представьте, что за день на сайт и на почту пришло свыше 200 000 писем, на следующий день ещё столько же или чуть больше, по статистике, к примеру, 50 000 писем по делу, 10120 писем к примеру просто шутники - а как вы хотели, тролли есть везде))) А остальное - СПАМ.
Понимаете, не вы не ваш нанятый человек за день не сможет обработать столько информации, после 8 часов у монитора уже болят окуляры и пятая точка, а большее время нахождения за компом и подавно порча здоровья.
Так что шутки в сторону. Когда задача в зародыше решена не верно, при глобальном росте, устранить течь будет сложно. Равносильно одному человеку удерживать на плаву тонуший Титаник.
Думаю смысл этого валидатора и проблема - понятны.
ВОПРОС: Как лучше реализовать такой валидатор, что лучше всего сделать? Какой подход тут нужен? Делал ли кто-то подобное? Если да, то что из этого вышло?
P.S. возможно кто-то скажет, а зачем их удалять, запиши в БД, и удаляй через cron письма, помеченные, как подозрительные. В этом случае смысл валидатора полностью теряется. Зачем нужен такой скрипт, по решению проблем со спамом, если за него потом всё равно приходится всё пересматривать и переделывать. Придумали же сито, фильтры, чтобы оставалось что-то одно, а терялось что-то другое. Нужен совет, логика, и конструктивные объяснения.
Что то тут не то.... Капча как раз и спасает от дядей Сема, если поставить гугловскую то процент спама будет очень низкий и спам фильтр отпадает поскольку к Вам будут приходить одни Пети, а шутников придется банить, в ручную или автоматически. И как то не очень верится что посещаемость вашего сайта 50000 уников в день исходя из полезных писем, при 200000 писем в день - сервер скорее бы лег
На текущем этапе развития технологий ничто не справится лучше человека с фильтрацией таких писем. Есть всякие нейросети и ИИ, которые автоматически определяют спам, почему бы не воспользоваться ими? Тот же Gmail прекрасно фильтрует спам (не всегда корректно, но в большинстве случаев).
sidni, не всегда спамеры прибегают к ботам и сервисам массовой рассылки, так как понимают, что есть всякие там капчи, вот и нанимают фриланс и шоколоту, которая за копейки готова завалить письмами любой ящик, чтобы заработать на сигареты и пиво. Так что фактор существования мелких мерзавцев нельзя отметать. Базар всё равно надо как то фильтравать, чтобы в почту приходили правильные письма ))
OKyJIucT, но компании пользуются корпоративной почтой, а не джимэйлом в интересах безопасности конфидециальной информации. Очень популярен в компаниях OutLook, и с этим ничего не поделаешь, это так же бесполезно, как и доказывать компаниям какой Битрикс кривой и ужастный, что есть решения с меньшей кровью, но разве мы ищем лёгких путей? Так что нет Gmail не решение. Зато замечательный сборщик информации о вас, вы только отправили письмо, а гугл уже знает что вам предложить! :) Боже какое совпадение, мы случайно предложили вам то что вы искали )))
Не понимаю при чем тут yii? В любом проекте валидация разделена на 2 части. js работает в клиенте, на сервере php. Это не фишка yii, это общепринятая практика. Но js валидация - это не защита, это удобство. Пользователь быстрее видит ошибку и может исправить, без запросов на сервер. Но обойти это можно очень просто. Так как весь код в теле страницы. Как минимум послать post запрос не из страницы, на Ваш сервер.
Так что более менее серьезная валидация должна быть на сервере. Так вот для этого придумали кучу серверных решений, в том числе и обучаемых по стоп словам.
Максим Тимофеев, а вот это интересно. Как можно сделать пост запрос не через страницу?
Я правильно понимаю, такого рода валидация не надёжна? Её можно обойти?
use yii\base\Model;
class MyForm extends Model
{
public $body;
public $token;
public function rules()
{
return [
['body', 'validateStopHamSPAM'],
['token', function ($attribute, $params) {
if (!ctype_alnum($this->$attribute)) {
$this->addError($attribute, 'Токен должен содержать буквы или цифры.');
}
}],
];
}
Игорь Васильев, если багов в коде нет, то обойти нельзя. обычно используют обе валидации сразу - на бекенде, и на фронте. Если фронтовая прошла - только тогда отправляют запрос и валидируют на бекенде.
эх не тем Вы занимаетесь... Ваш валидатор не решит эффективно проблему. Тема защиты от спама слишком обширная что бы решить ее написанием простого валидатора. Не изобретайте велосипед, лучше ознакомьтесь с существующими методами защиты их сейчас, слава богу, предостаточно начиная от спам-фильтров гугла и заканчивая фаерволами и спец-сервисами анализирующими текст сообщений. Изучите более подробно тему, а не решайте задачу "в лоб"
Максим Федоров, пока ещё не занимаюсь. Что касается задачи в лоб, хочу заметит что есть Outlook, встроенная в Windows 10 почтовая программа, iCloud Mail, Hotmail, Netpeak и так далее. Я ценю вашу заботу по поводу костылей и велосипедов, зачем двигаться в плавь, если океан можно перелететь. НО! Компании не пользуются бесплатной почтой, и уж тем более майлом, джимайлом или яндексом. Чтобы не было утечки коммерческой тайны, чтобы была надёжная защита информации, компании создают корпоративную почту. Порой это внутренний почтовый сервер, среди персонала компании, но чтобы клиент мог написать, внутренняя почта не подойдёт. У меня у самого платная почта, которую я создал вместе с сайтом. Там нет рекламы, спам письма сразу летят в спам, время уходит только на то, чтобы выделить весь спам и удалить. В моём случае, мне остаётся создать только валидатор, чтобы и этого тоже не делать, на самом деле это больная и актуальная тема. Что касается сервисов, они то и создают эти спам рассылки, чтобы к ним обращались, ничего личного, только бизнес. Поэтому, если вы сопративляетесь, значит вы существуете. Хороший маяк для спамеров, что адрес они угадали точно. А так, письма никто не банит, не читает, не открывает, раз так, такие e-mail попадают в список бесполезных и не существующих. Я несколько лет наблюдал как это работает ))) Так что, хорошо я ознакомлен в этой сфере? Ммм? )))
Максим Федоров, ну дык, давайте подумаем, посоветуемся, что можно сделать, чтобы решить этот вопрос. Он особенно актуален в сфере услуг и интернет-магазинов.
Самое разумное решение, какое вообще мне пришло, хоть и прошло уже много времени с того момента, как я задал этот вопрос - так это вот эта страница - fspamlist.com/index.php?c=api
По API мы проверяем аж 3 параметра - email , login , IP-adress
Что даёт этот инструмент ))) Если хотя бы один из параметров вернёт FALSE - можем отказать пользователю хоть в чём (регистрация, авторизация, комментарий, отправка сообщений)
Валидаторы на Yii2 связанные с API я уже писал, так что проверку можно повесить хоть на какое поле ввода, или вообще на все, смысл в том чтобы в принципе проверить, кто пытается ворваться в поля ввода, и если данный пользователь в чёрном списке СПАМА - то мы ему отправляем бан.