Как я могу избежать последовательности входов в угловом приложении? - PullRequest
0 голосов
/ 14 мая 2018

Я учусь на английском, и я столкнулся с этой проблемой. Как я могу предотвратить загрузку программы пользователем, введя форму несколько раз подряд .. например, используя этот 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 Ответ

0 голосов
/ 14 мая 2018

Нелегко остановить несколько публикаций, в любом случае, если вы ограничиваете в своем приложении (на стороне клиента), тем не менее, кто-то может использовать какой-то автоматизированный инструмент, чтобы сделать несколько дублирующих запросов на ваш сайт. Например, если вы используете fiddler, вы можете воспроизводить один и тот же запрос любое количество раз. Даже это возможно с помощью инструмента разработчика, где вы можете воспроизвести любой запрос.

Это не может быть обработано на стороне клиента. Вы должны обрабатывать только на стороне сервера.

Ниже приведены несколько подходов, которые вы можете попробовать.

  1. Реализация CAPTCHA/re-CAPTCHA в вашем приложении. Это очень легко интегрировать, и вы найдете множество плагинов в Angular для использования.

  2. Вы также можете думать об ограничении на основе IP, если с определенного IP, Вы получаете несколько запросов, вы можете заблокировать их на некоторое время.

  3. Вы всегда можете проверить на стороне сервера / стороне базы данных, если такая же запись уже существует, если да, то отклонить запрос.

...