Используйте str_replace для предотвращения внедрения php в загруженный HTML-контент

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

Как я знаю, обычный пользователь (не злонамеренный пользователь) никогда не будет использовать тег php (<?php, ...) в содержании HTML. Если они хотят показать <?php, редактор будет конвертировать < в &lt;, Поэтому для злоумышленника с внедрением html я использую str_replace изменить все php теги для комментариев. Например:

$htmlStr = str_replace("?php", "<!--?php", htmlStr);
$htmlStr = str_replace("?>", "?-->", htmlStr);

Это не займет времени по сравнению с использованием preg_replace или же DOMDocument, Я знаю, что контент может быть затронут (например, если тег ?> отсутствует, все содержимое преобразуется в комментарий). Тем не менее, это злонамеренный пользовательский контент.

Есть ли какие-либо проблемы на этом пути? Я думаю, что так просто?

-1

Решение

Никогда не создавайте свои собственные реализации антиинъекционных скриптов, если только вы действительно знаю, что ты делаешь.

Если возможно, запретите любой пользовательский контент на основе HTML. Если нет, используйте существующее решение, такое как Очиститель HTML.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector