有什么方法可以防止表单上的垃圾邮件?我有一个网站,并用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
}
})
}
}
});
仅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!)
但是显然,您需要在发布前将其取出。