В угловом я делаю вызов 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;
}