代码之家  ›  专栏  ›  技术社区  ›  Eduardo Lopes

如何避免角度应用程序中遵循的一系列输入?

  •  1
  • Eduardo Lopes  · 技术社区  · 7 年前

    我正在学习角度,我遇到了这个问题。如何防止用户通过连续多次输入表单来淹没程序。。例如,使用以下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>
    

    这在workzone上是联机的。tk公司 部署在firebase主机上

    谢谢大家!

    1 回复  |  直到 7 年前
        1
  •  0
  •   PSK    7 年前

    要阻止多篇帖子并不容易,如果你在应用程序(客户端)中进行限制,仍然有人可以使用一些自动工具向你的网站发出多个重复请求。例如,如果您使用 fiddler ,可以多次播放相同的请求。使用开发人员工具,您可以重播任何请求,甚至可以做到这一点。

    这不能在客户端处理。您只需要在服务器端处理。

    以下是您可以尝试的几种方法。

    1. 使生效 CAPTCHA/re-CAPTCHA 在应用程序中。这很简单 要集成,您将在 Angular 使用。

    2. 您也可以考虑基于IP的限制,如果来自特定IP, 您收到多个请求,您可以将其阻止一段时间。

    3. 如果已经有相同的记录,则始终可以在服务器端/数据库端进行检查