NodeJS防止垃圾邮件形式

问题描述 投票:1回答:1

有什么方法可以防止表单上的垃圾邮件?我有一个网站,并用python(请求库)发送了500多个请求,有没有办法防止这种情况发生?人们可以更改其用户代理,并使用代理进行垃圾邮件发送。有什么我可以使用的技巧或任何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
                }
            })
        }
    }
});
node.js spam-prevention
1个回答
0
投票

仅500个垃圾邮件?不错。许多站点获得数万个。这是一个很大的麻烦。网络蠕虫....

很难在服务器的代码中停止这些帖子。

减慢垃圾邮件发布速度的最佳方法是将CAPTCHA(“我不是机器人”)合并到您网页上的发布表单中。

Google提供了他们的reCAPTCHA服务。出于Google的标准理由,这是件好事:它将所有使用它的站点的数据悬停,并列出要拒绝的知名垃圾邮件发送者列表。

还有其他方法。一种是要求所有POST用户都必须先使用电子邮件和密码注册,然后要求他们通过回复您发送给他们的电子邮件来完成注册。但这比快速解决post()路由要大。

EDIT在开发中,您知道您和测试人员在其浏览器中使用的IP地址。因此,请使用您自己的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!)

但是显然,您需要在发布前将其取出。

© www.soinside.com 2019 - 2024. All rights reserved.