Задать вопрос
ae_ph
@ae_ph
I'm a owl )

Как защитить форму отправки писем от ботов и XSS?

У меня есть на сайте форма обратной связи, любой пользователь может зайти на сайт (ледос 1 страница) заполнить её и отправить мне на email. Я хочу поставить защиту от ботов и xss.
На NPM я нашёл JSXSS Зашёл к ним на сайт там показано следующее..
5f6d0638b2fc1810570137.jpeg
Подскажите мне пожалуйста я правильно понимаю, чтобы её подключить для того что-бы она начала работать нужно следующее..
1) Я у себя в проекте установил её npm i xss --save-dev в gulp подключил её 'node_modules/xss/dist/xss.js'
2) Закинул в основной файл JS скрипты с сайта из примеров
$(function() {
    var html = filterXSS('<script>alert("xss");</scr' + 'ipt>');
    alert(html);
    options = {}; // Custom rules
    html = xss('<script>alert("xss");</script>', options);
});
$(function() {
    options = {}; // Custom rules
    html = xss('<script>alert("xss");</script>', options);
});
$(function() {
    options = {}; // Custom rules
    myxss = new xss.FilterXSS(options);
    // затем примените myxss.process()
    html = myxss.process('<script>alert("xss");</script>');
});
$(function() {
    // разрешены только тег a и его атрибуты href, title, target
    var options = {
        whiteList: {
            a: ['href', 'title', 'target', 'label']
        }
    };
});
// Настроить функцию экранирования для HTML 
function escapeHtml(html) {
    return html.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
// Настроить функцию экранирования для значений атрибутов 
function safeAttrValue(tag, name, value) {
    // Параметры такие же, как у onTagAttr (без опций) 
    // Возвращаем значение в виде строки
}


1) А вот это вот нужно закидывать в JS файл?
5f6d079920299266906573.jpeg

2) Эмм она уже будет работать? Или её как-то нужно через JS к форме привязать.. Не пойму никак..
==========================================================
Против ботов
p.s. читал что капча это бесполезная штука да и люди которые будут заходить что-бы отправить форму мне на email врятли захотят возится из за этого с капчей.

Нашёл вот это вот Простая приманка для HTML-формы с использованием PHP

По ней объясните мне пожалуйста как правильно подключить.

То как я это понимаю. скорее всего ошибаюсь
1) Нужно мой index.html переименовать в index.php
2) Добавить в него данный php файл. В форме есть id с именами и эти id имена вставить в этот файл $name = $_POST['name'];
<?php

//check if form was sent
if($_POST){

	$to = 'some@email.com';
	$subject = 'Testing HoneyPot';
	$header = "From: $name <$name>";

	$name = $_POST['name'];
	$email = $_POST['email'];
	$message = $_POST['message'];

	//honey pot field
	$honeypot = $_POST['firstname'];

	//check if the honeypot field is filled out. If not, send a mail.
	if( ! empty( $honeypot ) ){
		return; //you may add code here to echo an error etc.
	}else{
		mail( $to, $subject, $message, $header );
	}
}

?>


Вроде так.
Для самой формы отправки у меня есть отдельный php файл уже работает отправка.
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 2
Не изобретайте велосипед , поставьте invisible recaptcha ...

Если все таки аж распирает от велосипедостроения вшейте пиксель в css или js который будет являться тем кто запишет в сессию пользователя флаг бот это или нет

Ваш js модуль песполезен, такие фильтрации надо делать на бекенде
Ответ написан
ae_ph
@ae_ph Автор вопроса
I'm a owl )
Да для защиты от XSS нужен бэкенд и как они это там делают я вот вообще не в курсе, точно так-же как и ставят серверную часть.
Но хотя-бы экрнирование input'ов можно произвести на фронте. Что в принципе я уже и написал на JS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы