Функция PHP, которая проверяет язык кода - PullRequest
2 голосов
/ 13 февраля 2011

У меня есть форма с 2 textareas; первый позволяет пользователю отправлять HTML-код, второй позволяет отправлять CSS-код. Я должен проверить с помощью функции PHP, если язык правильный.

Если язык правильный, в целях безопасности я должен убедиться, что нет кода PHP, SQL-инъекций или чего-либо еще.

Что ты думаешь? Есть способ сделать это ? Где я могу найти такую ​​функцию?

Является ли "Очиститель HTML" http://htmlpurifier.org/ хорошим решением?

Ответы [ 6 ]

1 голос
/ 13 февраля 2011

Если вам нужно проверить дату, чтобы вставить их в базу данных - тогда вам просто нужно использовать функцию mysql_real_escape_string (), прежде чем вставлять их в базу данных.

//Safe database insertion
mysql_query("INSERT INTO table(column) VALUES(".mysql_real_escape_string($_POST['field']).")");

Если вы хотите вывести данные конечному пользователю в виде простого текста - тогда вы должны экранировать все html-чувствительные символы с помощью htmlspecialchars (). Если вы хотите вывести его как HTML, вы должны использовать инструмент HTML Purify.

//Safe plain text output
echo htmlspecialchars($data, ENT_QUOTES);

//Safe HTML output
$data = purifyHtml($data); //Or how it is spiecified in the purifier documentation
echo $data; //Safe html output
0 голосов
/ 15 февраля 2011

Хорошо, спасибо вам всем.

На самом деле, я понимаю, что мне нужна человеческая проверка. Пользователи могут публиковать HTML + CSS, я могу проверить в PHP, что язык и синтаксис верны, но это не мешает людям публиковать iframe, перенаправление html или большой черный div, которые занимают весь экран.

: -)

0 голосов
/ 13 февраля 2011

HTMLPurifier - это рекомендуемый инструмент для очистки HTML.И, если повезет, он также включает CSSTidy и может также очистить CSS.

... что нет ни PHP-кода, ни SQL-инъекций, ни чего-либо еще.

Вы основываете свой вопрос на неправильной предпосылке.Хотя HTML можно очистить, это не является защитой от других уязвимостей.PHP-теги, скорее всего, будут отфильтрованы.Если вы делаете что-то другое странное (включаете или частично оцениваете контент), это не поможет.
А эксплойты SQL могут быть предотвращены только путем тщательного использования соответствующих функций экранирования базы данных.В этом нет волшебного решения.

0 голосов
/ 13 февраля 2011

Подсветка синтаксиса SHJS для Javascript имеет файлы с регулярными выражениями http://shjs.sourceforge.net/lang/ для языков, которые выделяются - Вы можете проверить, как SHJS анализирует код.

0 голосов
/ 13 февраля 2011

для чего-то примитивного вы можете использовать регулярное выражение, НО следует отметить, что рекомендуется использовать парсер, чтобы полностью исчерпать все возможности.

/(<\?(?:php)?(.*)\?>)/i

Пример: http://regexr.com? 2t3e5 (измените &lt; в выражении обратно на <, и оно будет работать (по какой-то причине rexepr меняет его на форматирование html))

EDIT

/(<\?(?:php)?(.*)(?:\?>|$))/i

Это, вероятно, лучше, так как они не могут поместить php в конец документа (поскольку PHP фактически не требует завершающего символа)

0 голосов
/ 13 февраля 2011

Да.htmlpurifier - это хороший инструмент для удаления вредоносных скриптов и проверки вашего HTML. Не думаю, что это делает CSS. Очевидно, что это работает и с CSS.Спасибо Briedis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...