Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   innerHTML и безопасность (https://javascript.ru/forum/events/22501-innerhtml-i-bezopasnost.html)

sommer 22.10.2011 20:15

innerHTML и безопасность
 
Добрый день всем!
Сделал я форму для отправки сообщений и снизу этой формы отображаю все что вводится пользователем ( заменяя с помощью innerHTML смайлики на картинки )
Я понимаю, что с точки зрения безопасности это не сильно хорошо отображать введенный пользователем текст в виде html.
Пробовал множество скриптов, но ни один из них не сработал...
Вопрос насколько это безопасно?

dmitriymar 22.10.2011 20:24

Цитата:

Сообщение от sommer
Вопрос насколько это безопасно?

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

B@rmaley.e><e 22.10.2011 21:35

Цитата:

Сообщение от dmitriymar
Открываете возможность для sql инъекции.

При чём тут SQL инъекция?
Цитата:

Сообщение от sommer
Я понимаю, что с точки зрения безопасности это не сильно хорошо отображать введенный пользователем текст в виде html.

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

А юзер и так имеет возможность выполнить произвольный код на страничке у себя в браузере: банальный протокол javascript:, например.

dmitriymar 22.10.2011 22:09

Цитата:

Сообщение от B@rmaley.e><e
При чём тут SQL инъекция?

Это инъекция тоже,ничего не мешает и sql внедрять.
Да и нтмл внедрение тоже называют sql инъекцией-в нескольких источниках встречал.
Возможно изза того ,что скрипт код при выполнение на клиенте может инициировать свои запросы,а учитывая нтмл5(работу с базами) -это вообще чистейшая инъекция.

B@rmaley.e><e 23.10.2011 00:24

Цитата:

Сообщение от dmitriymar
Это инъекция тоже,ничего не мешает и sql внедрять.

И как оно связано с отображением вводимого текста? Правильно, никак.
Цитата:

Сообщение от dmitriymar
Да и нтмл внедрение тоже называют sql инъекцией-в нескольких источниках встречал.

"Не читайте до обеда советских газет" ©
Цитата:

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

И какие данные он из этой базы утащит?

melky 23.10.2011 04:18

плюс к этому xss, он имел в виду.

dmitriymar 23.10.2011 10:31

Цитата:

Сообщение от B@rmaley.e><e
И какие данные он из этой базы утащит?

если есть базы с какими можно работать с помощью js значит и есть данные какие можно утащить из них.
Те есть если ты вложешь sql код в текст сохраняемый в базе он не выполниться? выполниться вложенный запрос, если не защитит-это не sql инъекция?

sommer 23.10.2011 10:42

Господа! :)
Дайте лучше живой пример!
Так как все хак скрипты что я пробовал не сработали...
А вот если сохранить сообщение с внедренным скриптом в базе и потом его отобразить с помощью innerHTML, то они вполне работают.

B@rmaley.e><e 23.10.2011 10:52

Цитата:

Сообщение от dmitriymar
если есть базы с какими можно работать с помощью js значит и есть данные какие можно утащить из них.

Эти данные хранятся у клиента. Воровать данные у самого себя как-то глупо.
Цитата:

Сообщение от dmitriymar
Те есть если ты вложешь sql код в текст сохраняемый в базе он не выполниться? выполниться вложенный запрос, если не защитит-это не sql инъекция?

Про сохранение в базе в посте ТС ничего не говорилось.

dmitriymar 23.10.2011 11:29

Цитата:

Сообщение от B@rmaley.e><e
Эти данные хранятся у клиента. Воровать данные у самого себя как-то глупо.

да на почему у себя?увести данные сможет любой кто введёт скрипт код в сообщение.
Цитата:

Сообщение от B@rmaley.e><e
Про сохранение в базе в посте ТС ничего не говорилось.

учитывая что он смйлики и т.д хочет -эт чтото на манер форума-так что базы неизбежны по идее


Часовой пояс GMT +3, время: 11:00.