NodeJS форма защиты от спама - PullRequest
1 голос
/ 29 апреля 2020

есть ли способ предотвратить спам в формах? У меня есть сайт, и я отправил более 500 запросов с помощью python (библиотека запросов), есть ли способ предотвратить это? Кстати, люди могут изменить свой пользовательский агент и использовать прокси для рассылки спама. Есть ли небольшая техника, которую я могу использовать, или какие-нибудь npm пакеты (не могу найти что-нибудь полезное для меня).

вот мой почтовый маршрут, я удалил запросы.

app.post('/:id', function(req, res){
    if(req.method == 'POST') {
        var id = req.params.id;
        if(isNaN(id) == false) {
            db.query('SELECT * FROM users WHERE id = "'+id+'"', function(loggerErr, logger) {
                if(!loggerErr) {
                    db.query(, function(logErr, logRes) {
                        if(!logErr) {
                            res.redirect('/');
                        } else {
                            throw logErr
                        }
                    })
                } 
            })
        } else {
            db.query(, function(logErr, logRes) {
                if(!logErr) {
                    res.redirect('/');
                } else {
                    throw logErr
                }
            })
        }
    }
});

1 Ответ

0 голосов
/ 29 апреля 2020

Только 500 спам-сообщений? Неплохо. Многие сайты получают десятки тысяч. Это большая неприятность. Cybercreeps ....

Довольно сложно остановить эти записи в коде вашего сервера.

Лучший способ замедлить спам-сообщения - это включить CAPTCHA («Я не робот») в ваши формы публикации на веб-страницах.

Google предлагает сервис reCAPTCHA . Это хорошо по стандартной причине Google: он собирает данные со всех сайтов, которые его используют, и создает списки известных спамеров, чтобы отклонить их.

Есть и другие способы. Во-первых, требуется, чтобы все пользователи, которые размещают POST, сначала зарегистрировались по электронной почте и паролям, а затем попросили их завершить регистрацию, ответив на электронное письмо, которое вы им отправили. Но это больше, чем быстрое исправление маршрута post().

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

const ipWhitelist = ['10.11.12.13', '10.12.14.16', '192.168.123.124']
...

Затем в верхней части вашего post() метода сделайте это.

if (!ipWhitelist.includes(req.connection.remoteAddress)) 
   throw new Error('ip not in whitelist, begone cybercreep!)

Но, очевидно, вам нужно вытащить это перед выпуском.

...