Symfony3 - Как проверить HTML-теги

Используя валидаторы Symfony Как предотвратить некоторые HTML-теги, такие как <input></input><textarea><textarea>
быть введенным в поле ввода и сохраненным в базе данных?

Когда вы говорите «некоторые HTML-теги», вы имеете в виду все HTML-теги или определенные?

OK sure 28.09.2018 15:59

@OKsure, я имею в виду только конкретные.

Basel Issmail 28.09.2018 17:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
626
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете утверждать, используя регулярное выражение для свойств текста / строки в своей сущности. Например, это должно блокировать любые HTML-теги в строке:

// src/Entity/Thing.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Thing
{
    /**
     * @Assert\Regex(
     *     pattern = "/<[a-z][\s\S]*>/i",
     *     match=false,
     *     message = "Your text cannot contain HTML"
     * )
     */
    protected $text;
}

Это должно проверить наличие элементов input и textarea:

// src/Entity/Thing.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Thing
{
    /**
     * @Assert\Regex(
     *     pattern = "/<(?=.*? .*?/ ?>|textarea|input)[a-z]+.*?>|<([a-z]+).*?</\1>/i",
     *     match=false,
     *     message = "Your text cannot contain certain HTML tags"
     * )
     */
    protected $text;
}

также вы можете использовать функцию strip_tags php в своей функции установки, чтобы предотвратить теги html, также вы можете передать некоторые разрешенные теги в эту функцию.

public function setText()
{
    $this->text = strip_tags($text);
    return $this;
}

Другие вопросы по теме