node.js - NodeJS表单垃圾邮件预防
问题描述
有什么方法可以防止表单上的垃圾邮件吗?我有一个网站并使用 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 个垃圾帖子?不错。许多网站获得数以万计。这是一个大麻烦。网络爬虫....
在您的服务器代码中阻止这些帖子非常困难。
减慢垃圾邮件发布速度的最佳方法是将验证码(“我不是机器人”)合并到您网页上的发布表单中。
Google 提供他们的reCAPTCHA服务。这对 Google 的标准理由是有好处的:它会收集每个使用它的网站的数据,并列出要拒绝的知名垃圾邮件发送者。
还有其他方法。一种是要求所有 POST 用户首先使用电子邮件和密码进行注册,然后要求他们通过回复您发送给他们的电子邮件来完成注册。但这比快速修复post()
路线更重要。
编辑在开发中,您知道您和您的测试人员将哪些 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!)
但很明显,你需要在发布前把它拿出来。
推荐阅读
- angular - 同步角度拦截器对象
- javascript - 触地后跳跃球员
- android - ionic 4 - 有没有办法在 3 个项目之后的离子列表之间实施谷歌广告?
- shell - 如何防止终端损坏?
- angular - else 单元测试中未采用的路径
- java - 当 Fibers 到来时,Servlet 会比响应式 Web 框架更好吗?
- wordpress - 通过他们的 request_status 获取文档列表,例如 Zoho api PHP 中的“已完成”?
- javascript - Eslint 规则“语句之间的填充线”未按预期工作
- c++ - 在其他线程中迭代该 concurrent_vector 时调用 concurrency::concurrent_vector::push_back 是否并发安全?
- c# - FakeItEasy 模拟对象修改方法