угловые api контактные формы безопасности - PullRequest
1 голос
/ 07 мая 2019

В угловом я делаю вызов API, когда пользователь отправляет контакт-формуляр. Тогда я подумал, что API должен отправить запрос на сервер на стороне сервера со всеми учетными данными и выполнить команду php mail.

Здесь только одна проблема. Это оставляет угрозу безопасности. Если пользователь получает информацию API со стороны клиента, а затем вручную отправляет запрос с вышеуказанной информацией, пользователь может спамить почтовую службу.

Итак. Как мы обеспечиваем этот процесс? ReCapcha может быть идеей. Но что, если пользователь также получит ответ от reCapche и отправит его вручную с помощью почтового запроса? Тогда это снова не безопасно.

Как правильно защитить наши веб-формы на стороне клиента и на стороне сервера?

api-mailto машинопись:

mailTo(name: string, email: string, message: string) {

    const formData = new URLSearchParams();

    formData.set('name', name);
    formData.set('email', email);
    formData.set('message', message);

    const options = {
      headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
    };

    return this.httpClient.post(this.rootUrl + 'custom/mail', formData.toString(), options);
  }

Сервер сайта почтовой службы:

private function mailService()
  {
    $errors = [];

    if(!isset($request['name']) || $request['name'] == ''){
      $errors[] = "Name is empty";
    }

    //Validation continues...

    if(count($errors) === 0){
      $this->mailExec($request['email'], ($request['subject']) ? $request['subject'] : 'Besked fra: Simonduun.com', $request['message']);
      return true;
    }

    return $errors;

  }
...