javascript - 如何避免角度应用程序中遵循的一系列输入?
问题描述
我正在学习角度,我遇到了这个问题。如何通过连续多次输入表单来防止用户淹没程序..例如使用这个javascript:
javascript:for(var i=0;i<9999999;i++){ document.getElementByTagName("button")[0].click();
那是我的角度代码: 组件:
export class InsertTODO implements OnInit {
constructor(private angularFire: AngularFireDatabase) { }
ngOnInit() {
}
form_submit(f: NgForm) {
this.angularFire.list('todos').push(
{
name: f.controls.name.value
}).then((t: any) => console.log('recorded data ' + t.key),
(e: any) => console.log(e.message));
f.controls.name.setValue('');
}
看法:
<h1> WorkZone TODO </h1>
<form #f="ngForm" (submit)="form_submit(f)">
<input type="text" ngModel name="name" placeholder="TODO">
<br/>
<br/>
<button type="submit">Insert</button>
<button type="reset">Clear</button>
</form>
这是在 firebase 主机上部署的 workzone.tk 上在线
谢谢大家!
解决方案
停止多个帖子并不容易,无论如何,如果您在应用程序(客户端)中进行限制,仍然有人可以使用一些自动化工具向您的网站发出多个重复请求。例如,如果您使用fiddler
,您可以多次播放相同的请求。甚至可以使用可以重放任何请求的开发人员工具来实现这一点。
这不能在客户端处理。您只需要在服务器端处理。
以下是您可以尝试的几种方法。
在您的应用程序中实施
CAPTCHA/re-CAPTCHA
。这很容易集成,您会发现很多插件Angular
可供使用。您也可以考虑基于 IP 的限制,如果来自特定 IP,您收到多个请求,您可以将其阻止一段时间。
如果相同的记录已经存在,您可以随时在服务器端/数据库端检查,如果是,则拒绝请求。
推荐阅读
- video - 使用 ffmpeg 转换适合支持 MPEG-4 / DivX 的 DVD 播放器的 mkv 或 mp4
- arrays - 将临时字符数组从 for 循环复制到另一个数组
- python - 在 Pandas 中找到一组对象的总和的平均值
- php - 如何安全地将值从 WP Forms 传递到 PHP 代码?
- function - 在汇编中接收整数
- datetime - 如何改进反垃圾邮件功能 discord.py?
- vba - 我需要帮助,将复制的项目与 Excel 中的 Powerpoint 对齐
- c# - 为什么使用 Blazor OnInitialized 方法返回基方法
- azure - Azure 应用程序网关入口控制器未到达服务(CLusterIP)
- django - 使用 dj_rest_auth 的 Django REST 社交登录不会对用户进行身份验证