2010-09-08 2 views
1

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

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

ответ

2

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

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

Как только у нападающего есть доступ администратора, он может систематически управлять всей системой. Это произошло недавно с Apache - read their article on it. Это лучшая рецензия на инцидент с безопасностью, который я когда-либо видел, вы многое узнаете от него.

+0

+1. хорошая статья .. вы пропустите всю точку, хотя .. я не беспокоюсь о введении на стороне клиента и о том, какие последствия он может иметь. Мне нужно знать, может ли он иметь какие-либо последствия для сервера. Спасибо за попытку. – pinaki

+0

@pinaki - может также влиять на серверную сторону, ** если ** вы делаете какой-то сервер include/eval на основе предоставленного пользователем контента. Например, см. Эту страницу - http://www.owasp.org/index.php/File_System#Includes_and_Remote_files –

+0

@pinaki .., но кроме того, XSS не может непосредственно причинить вред серверу; его клиентская вещь. –

0

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

+0

Возможны ли какие-либо действия на стороне сервера? можете ли вы привести пример? – pinaki

+0

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

0

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

EDIT: О, я пропустил текст, в котором говорилось, что вы просто повторяете текст. Hm, ну, может быть, пользователь может выдавать команды PHP, если вы оцениваете ввод пользователя. Но я не знаю, почему вы должны это делать, потому что тогда пользователь может выдать на сервер какие-либо команды PHP (что является четким риском безопасности) ...

+0

Я не делаю eval .. так что этого случая не существует .. – pinaki

0

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

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 (detto) стол, может быть, несколько больше.

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