проблемы безопасности при отображении введенного пользователем текста - PullRequest
1 голос
/ 08 сентября 2010

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

Мне нужно знать, возможно ли что-то подобное eval в этом случае.

Ответы [ 4 ]

2 голосов
/ 08 сентября 2010

Сценарий, который вы объяснили, называется XSS. Возможно скомпрометировать ваш сервер с помощью уязвимости XSS, но для этого нужны другие вещи.

Допустим, у вас есть учетная запись администратора, у которой есть разрешения на изменение конфигурации вашего сервера через Интернет. Теперь, если злоумышленник создаст ссылку XSS и каким-то образом заставит администратора щелкнуть по ней, его учетная запись будет взломана.

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

0 голосов
/ 08 сентября 2010

Использование:

echo htmlentities($string);

Везде. Если вы не хотите открыть свое приложение для десятков возможных атак:

http://ha.ckers.org/xss.html

Если вам нужно отобразить HTML-разметку:

1) Используйте HTMLPurifier для HTML перед сохранением его в базе данных.

2) Рекомендую использовать фильтрацию XHTML STRICT.

3) Запретить теги, такие как скрипты, фреймы, атрибуты, такие как onclick и т. Д. Список тегов и атрибутов, которые пользователи, вводящие HTML, никогда не должны, очень длинный. Просто ограничьте их тем, что им может понадобиться, например: p, ol, ul, h1, h2, h3, dl, abbr, img (это может быть опасно, много возможных атак через тег img, будьте осторожны), a (детто) столик, может быть, еще несколько.

0 голосов
/ 08 сентября 2010

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

РЕДАКТИРОВАТЬ: О, я пропустил текст, сказав, что вы просто повторяете текст.Хм, ну, может быть, пользователь может давать команды PHP, если вы оцениваете вводимые пользователем данные.Но я не знаю, почему вы должны это делать, потому что тогда пользователь может вводить на сервер любые команды PHP (что представляет явную угрозу безопасности) ...

0 голосов
/ 08 сентября 2010

используйте htmlspecialchars ($ yourstring) в php или лишайте символов, нет необходимости открывать возможности для эксплойтов.

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