#php #editor #filter #javascript
#php #редактор #Фильтр #javascript
Вопрос:
Я использую редактор TinyMCE на своем сайте. Я хочу изучить способ правильного фильтра для моего ввода при вставке в DB. Какие фильтры необходимо использовать? Например, я получаю этот ввод в БД таким образом;
$example = $_POST['example'];
<textarea name="example"></textarea>
Я не использую htmlscepialchars(); потому что мне нужны html-теги.
«Извините за мой плохой английский».
Комментарии:
1. Вопрос не ясен. Куда вы будете складывать содержимое
$example
. Чего вы хотите не допустить?2. @Artefacto я хочу разрешить html-теги, но я хочу блокировать нежелательные sql-запросы и другие нежелательные коды.
Ответ №1:
HTMLPurifier.
Скачать его можно здесь: http://htmlpurifier.org /
Включите его:
include 'path/to/HTMLPurifier.auto.php';
Используйте его:
$config = HTMLPurifier_Config::createDefault();
$config->set('Core', 'Encoding', 'UTF-8');
$config->set('XHTML', 'Doctype', 'XHTML 1.0 Strict');
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify( $dirty_html );
И спите спокойно, зная, что в HTML, очищенном подобным образом, нет XSS-атак.
Люди, предлагающие mysql_real_escape_string(), вероятно, не поняли вашего вопроса (или я не понял), вы спрашивали, как фильтровать HTML-разметку из редактора WYSIWYG, чтобы ее можно было безопасно сохранить в базе данных.
mysql_real_escape_string() уместен в качестве защиты от внедрения SQL, но подготовленные инструкции (Google «PDO») лучше подходят для этого.
Ответ №2:
Если я правильно понимаю, вы хотите сохранить html в своей базе данных и вам нужен какой-то способ его кодирования?
Вы могли бы сделать следующее перед сохранением в БД:
urlencode($_POST['example']);
И когда вы извлекаете, вы можете urldecode($data);
Комментарии:
1. Есть ли причина, по которой я проголосовал против? Ответ, который я дал, является жизнеспособным решением — так что, кто бы ни проголосовал против, лучше выйдите вперед и объясните, почему они считают, что это не так…