Как мы можем предотвратить внедрение HTML в FASTAPI?

Мы разрабатываем REST API с использованием фреймворка Python под названием FASTAPI. Не удалось выполнить проверку безопасности кода для HTML-инъекции. Они отправляют некоторый код тега html в полезную нагрузку сообщения, мы вставляем его в БД и отправляем в ответ GET. Есть ли способ предотвратить эту HTML-инъекцию при обработке запроса в FASTAPI.


person samba    schedule 19.08.2020    source источник
comment
Вы можете использовать кодировку base64   -  person alex_noname    schedule 19.08.2020
comment
Кодирование base64 ничего не разрешит - если только вы не представляете закодированный контент в HTML-документе, что в основном бесполезно, если кто-то ожидал читаемый текст. После декодирования управляющие символы и теги HTML будут реконструированы, и внедрение будет происходить точно так же.   -  person jsbueno    schedule 19.08.2020


Ответы (1)


да. Никакой фреймворк не сможет волшебным образом изменить контент, который вы получаете, без вашего явного заявления об этом. (Представьте, что это был REST API для записи фрагментов HTML из внутренней системы, которые будут использоваться при рендеринге веб-страниц в другой конечной точке: вам понадобится HTML как есть)

Это просто вопрос вызова функции escape для ваших входных данных, прежде чем помещать ее в базу данных.

В этом случае достаточно стандартной библиотеки Python html.escape.

В вашем вопросе нет кода, и я не знаю FASTAPI наизусть, но если он помещает полезную нагрузку в БД, не просматривая какой-либо код, который вы пишете, вы должны либо настроить это, либо ввести этот вызов для предварительной обработки ваших данных или добавьте запускаемый этап (то есть подписчик на событие), который сделает это за вас.

person jsbueno    schedule 19.08.2020