Вопрос

Я экспериментирую с созданием системы комментариев. я использую php-oembed. класс и HTML очиститель. Отказ Какой фильтр я могу использовать, чтобы убедиться, что комментарии будут вставляться в мою базу данных? Я знаю, что вы можете использовать фильтры PHP, такие как Filter_sanitize_String, но они не будут ли они повернуть HTML в объекты?

Также, если вы используете что-то вроде Редактор WMD, тогда вы должны использовать что-то на стороне клиента (например, PHP Markdown) Чтобы убедиться, что это безопасно?

Это было полезно?

Решение

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

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

Там могут быть другие места, где вам нужно избежать специальных персонажей. Например, если вы отправляете комментарии к сценарию Bash на сервере, чтобы выполнить некоторую обработку. В этом случае вам нужно будет цитировать или избежать специальных символов Bash.

Важно не процитировать / сбежать на неправильном этапе: например, не избегайте HTML-объектов, когда вы помещаете его в базу данных, если вы не совсем уверены в том, что вы делаете. Очень легко случайно избежать вещей снова, когда вы вытаскиваете его из базы данных и приготовьтесь, чтобы отправить его в браузер или не избежать вещей, если вы отправляете сообщение об ошибке, если подключение к базе данных не удается (это может вызвать уязвимость XSS ). Сделайте свой сбежав в последний момент, и вы, скорее всего, избегаете этих подводных камней.

Другие советы

Вам не нужно использовать любой фильтр для инъекции SQL. Предпочтительное решение - использовать Подготовленные заявления. Отказ Например, PDO обеспечивает Pdostatement..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top