2014-01-29 1 views
0

Для безопасного использования в глобальном масштабе безопасно ли использовать htmlspecialchars или striptags, когда пользователь POST или GET в php?XSS Clean for Gets and Posts

, например, htmlspecialchars любого сообщения и получить, что послали по запросу и кроме того, что в базу данных

ответ

0

Для отображения целей вы можете использовать только htmlspecialchars() или htmlentities() для отражения общих атак XSS.

Не рекомендуется использовать данные (если это действительно необходимо), поскольку это может привести к потере всего форматирования, если пользователь предоставил какие-либо данные.

0

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

Хорошее чтение (как всегда) является OWASP чит-лист: https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#XSS_Cheat_Sheet

Если вы ожидаете обычного текста, всегда используйте htmlspecialchars() при отображении его с помощью веб-клиента. Некоторые шаблоны-движки, такие как Twig, уже делают это по умолчанию. В этом случае я бы не делал никаких проверок при сохранении в базе данных, потому что вам может понадобиться позже закодировать его для другого клиента - и вы ожидаете, что это будет простой текст, верно?

Если пользователь имеет RTE и может использовать HTML, я бы использовал strip_tags() или метод, который использовался в других фреймворках. Пример: http://svn.openfoundry.org/wowsecmodules/trunk/filter/RemoveXSS.php. TYPO3 также имеет довольно хороший, который вы можете просмотреть загрузив пакет и глядя в typo3/вно/RemoveXSS/RemoveXSS.php

Обходной бы использовать такие вещи, как BB-Code или Markdown, обрабатывается как обычный -text, который позже скомпилирован в HTML в вашем коде, но это в основном смущает редактор, если он не привык к тому, чтобы так себя вести.

То, что я не рекомендую вообще, но это возможно, чтобы позволить браузеру сделать работу - см XSS Basic Understanding

EDIT:

Два ЛИЭС, я связывался здесь для удаления XSS с HTML -data, оба основаны на одном и том же, но были раздвоены в разные проекты, а сообщества применяли исправления и так далее. Целью данного метода является то, как ваша, даже так я не поддерживаю, потому что это звучит как один размер подходит для всех решения:

Usage: Run *every* variable passed in through it. 
* The goal of this function is to be a generic function that can be used to 
* parse almost any input and render it XSS safe. ... 

Почему я против запуска этого метода на каждом входном-переменной ? Вы не думаете о том, что вы действительно хотите получить. Возможно, вам просто нужен текстовый текст ... В этом случае, как я писал ранее здесь, вам не нужно это делать, но просто используйте htmlspecialchars(), показывая его в контексте HTML.

 Смежные вопросы

  • Нет связанных вопросов^_^