Комментарии 9
А если взять какой-нибудь фреймворк, то все эти проблмы в нём решены из коробки и ничего велосипедить не надо.
if ($_POST) {
$username = htmlspecialchars(trim($_POST['name']));
$comment = htmlspecialchars(trim($_POST['comment']));
///
}
Лучше не делать экранирование ПЕРЕД добавлением в базу. В базе предпочтительнее хранить исходный текст комментария без каких-либо изменений. А вот при чтении текста комментария из базы и перед выводом на страницу как раз и стоит делать htmlspecialchars. (А ещё лучше просто использовать нормальный шаблонизатор и избавиться от htmlspecialchars совсем, но фреймворки я уже упомянул выше.)
$username = htmlspecialchars(trim($_POST['login']));
$password = htmlspecialchars(trim($_POST['password']));
Делать так перед SQL-запросом нет никакого смысла, это не имеет отношения к XSS, никак не защищает от SQL-инъекций и лишь зазря портит спецсимволы в пароле. А вот PDO защищает.
setcookie('count_try'
Злоумышленник тупо почистит куки, и все эти ваши защиты отключатся.
На счёт брутфорса. Таймаут на основе значений в куках? Им же нельзя доверять, их подменить можно…
if ($_POST) { $username = htmlspecialchars(trim($_POST['name'])); $comment = htmlspecialchars(trim($_POST['comment'])); /// }
Не лучшая идея. А что, если текст нужен в БД «как есть»? Лучше htmlspecialchars() вызывать при выводе данных.
Ну или TLS. Вообще TLS по сути является приемником SSL, потому что основан на SSL 3.0. В их работе нет существенных отличий.
Неужели здесь ключевое слово "Ну". Не было бы отличий, не изобретали бы TLS, а сечас уже TLS-1.3. Вообще SSL уже фактически отошел в Лету. И сегодня все больше сайтов переходят именно на TLS-1.3.
А чтобы получить https протокол для сайта, нужно получить SSL сертификат.
Наличие сертификата необходимое условие, но недостаточное.
В заключении
Этот подзаголовок особенно доставил. Кто в заключении? Джон? Разработчик? Автор статьи? :)
Базовые знания в безопасности сайтов