Не позволяйте пользователю вводить теги HTML во входные данные

У меня есть вход, который позволяет пользователям вводить текст, который затем отправляется с использованием PHP на другую страницу, где он хранится в базе данных. Я проделал некоторую простую проверку (проверяя, был ли вход не пустым), и это работает очень хорошо. Тем не менее, я обнаружил, что могу вводить теги HTML, например

<p> 

и он обходит эту валидацию, а также вмешивается в ввод.

Как проверить, содержит ли вход теги HTML, и если да, верните ошибку?

Чтобы проверить, попробуйте это:

 if( preg_match('#^<.>.+</.>$#', $your_value) ){ echo "NOT GOOD"; // and some error too } 

Вы можете сделать это:

 <input type='text' pattern='[a-zA-Z0-9]+'> 

Это гарантирует, что только буквы и цифры могут войти и не будут отправляться, если что-либо еще внутри входа.

Однако это только хорошая клиентская сторона и будет работать только для IE9 +

Это также не лучший метод проверки, если кто-то знает, что он делает. Все, что им нужно сделать, это перейти в исходный код, чтобы вынуть атрибут pattern , но для тех, кто этого не знает, все будет хорошо.

Для PHP вы можете использовать strip_tags() . Найдено здесь

Вы можете просто использовать htmlspecialchars или strip_tags перед вставкой в ​​базу данных.

Вы также можете использовать mysqli_real_escape_string или PDO :: quote для защиты строк