Базы данных PHP - не хочу показывать код JavaScript - PullRequest
1 голос
/ 22 августа 2011

У меня проблема с PHP и JavaScript / CSS.

У меня есть база данных с таблицей. В таблице приведены описания статей. Я хочу повторить описания статей из базы данных. К сожалению, во многих из них включен JavaScript или CSS (затем текст статьи), поэтому, когда я использую echo, он показывает весь этот код (и после этого текста). Есть ли способ не показать часть JavaScript / CSS и показать только текст? Например с str_replace и регулярным выражением? Если да, может кто-нибудь написать мне, как это должно выглядеть?

Спасибо за помощь и дайте мне знать, если вам нужна дополнительная информация (код и т. Д.)

Ответы [ 4 ]

5 голосов
/ 22 августа 2011

Используйте HTMLPurifier - он удалит скрипты, CSS и любой вредный контент из ваших статей. Поскольку это ресурсоемкие операции, лучше выполнить статью через HTMLPurifer перед сохранением в базе данных, а затем запускать ее каждый раз, когда вы показываете статью.

4 голосов
/ 22 августа 2011

Если вы пытаетесь удалить теги из сообщения пользователя, вы можете позвонить strip_tags.Это избавит от ссылок CSS, тегов скриптов и т. Д. Он не избавится от атрибута style, но если вы избавитесь от div, span, p и т. Д., Это не будет иметь значения- там не будет метки, в которой он будет находиться.

Как было сказано другими, как правило, лучше всего очистить ваш вход (данные от пользователя, прежде чем они попадут в БД), чем дезинфицировать ваш вывод .

2 голосов
/ 22 августа 2011

Если вы пытаетесь просто скрыть JS и CSS от пользователей, вы можете использовать Packer, чтобы запутать Javascript от менее опытных пользователей, использовать Packer и использовать кодировку base 62.JS все еще будет работать, но будет выглядеть как jiberish.Имейте в виду, что более осведомленные пользователи могут попытаться скрыть код, поэтому любые критические угрозы безопасности в JS все еще существуют.Не думайте, что любой JS, который напрямую обращается к вашим базам данных, будет безопасным;вместо этого удалите доступ к базе данных из Javascript для безопасности.Если JS просто делает причудливые вещи, такие как перемещение элементов по странице, то, вероятно, хорошо просто запутать его.

Учитывайте это только в том случае, если ВЫ полностью контролируете и знаете все JS, включенные в статьи.Если это что-то, что ваши анонимные или иным образом не могут загрузить 120% доверенные пользователи, вам нужно убить эту функциональность и использовать HTML Purifier для удаления любых JS, которые они могут добавить.Вывод введенного пользователем JS небезопасно для вас или ваших пользователей.

Для CSS я не уверен, почему вы хотите это скрыть, и CSS не может быть запутан так, как JS;стили по-прежнему будут написаны на простом английском языке, лучшее, что вы можете сделать, это разделить имена классов и идентификаторов и пробелы;Вывод CSS, который вы сгенерировали, не является реальной угрозой безопасности, и даже если бы люди его перепроектировали, я бы этого не боялся.

Опять же, если это что-то анонимное / ненадежные пользователи могут добавлять на ваш сайт самостоятельно, вы вообще этого не хотите, поэтому удалите возможность загружать CSS вместе со статьей, используя HTML Purifier Darhazerупоминается.

0 голосов
/ 22 августа 2011

Вы можете попробовать следующее регулярное выражение для удаления сценария и CSS:

"<script[\d\D]*?>[\d\D]*?</script>"
"<style[\d\D]*?>[\d\D]*?</style>"

Это должно помочь, но не может удалить все сценарии. Например, onclick = "javascript: alert (1)".

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