Обеспечение безопасности комментариев - PullRequest
0 голосов
/ 05 декабря 2010

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

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

Ответы [ 2 ]

2 голосов
/ 05 декабря 2010

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

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

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

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

1 голос
/ 05 декабря 2010

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

...