innerHTML и безопасность
Добрый день всем!
Сделал я форму для отправки сообщений и снизу этой формы отображаю все что вводится пользователем ( заменяя с помощью innerHTML смайлики на картинки ) Я понимаю, что с точки зрения безопасности это не сильно хорошо отображать введенный пользователем текст в виде html. Пробовал множество скриптов, но ни один из них не сработал... Вопрос насколько это безопасно? |
Цитата:
Защита: Вставляйте не в виде нтмл ,а в виде какойто последовательности символов. Используйте хнтмл ,заключайте код смайликов в свои теги и на сервере удаляйте из полученного все теги кроме этих. |
Цитата:
Цитата:
А юзер и так имеет возможность выполнить произвольный код на страничке у себя в браузере: банальный протокол javascript:, например. |
Цитата:
Да и нтмл внедрение тоже называют sql инъекцией-в нескольких источниках встречал. Возможно изза того ,что скрипт код при выполнение на клиенте может инициировать свои запросы,а учитывая нтмл5(работу с базами) -это вообще чистейшая инъекция. |
Цитата:
Цитата:
Цитата:
|
плюс к этому xss, он имел в виду.
|
Цитата:
Те есть если ты вложешь sql код в текст сохраняемый в базе он не выполниться? выполниться вложенный запрос, если не защитит-это не sql инъекция? |
Господа! :)
Дайте лучше живой пример! Так как все хак скрипты что я пробовал не сработали... А вот если сохранить сообщение с внедренным скриптом в базе и потом его отобразить с помощью innerHTML, то они вполне работают. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
или средствами того серверного языка на каком работаешь |
На серверную сторону валидация ASP.Net сама не пропустит любые тэги, ну а если все-таки каким-то чудом в базу сохранился код, то после обработки HtmlEncode любой код становится просто текстом...
Вопрос если в форме ввести текст с кодом и его же отобразить с помощью innerHTML - что такое страшное туда можно ввести? Желательно пример. |
Цитата:
|
Но ведь если я введу такой текст, то это явно может быть опасно ( хотя запуск сообщения и не происходит )
<script type="text/javascript" language="javascript"> alert('попытка'); </script> |
Цитата:
но исходя из вопроса,прочтите основы js , а именно первую страницу любого учебника по скрипту,где объясняется где js а где просто текст:-E |
Нет! Теги <script> удалятся только после публикации.
А при предпросмотре они не удаляются.... Предложение прочитать первую страничку учебника несерьезно. Я на JavaScript достаточно написал кода... ( хотя я и не эксперт ) |
PS:
Нашел вот такую функцию для энкодинга: function encodeHTML(s) { return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"'); } somediv.innerHTML= '<p>Hello, '+encodeHTML(name)+'</p>'; |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
100% верный ответ относительно JavaScript. Остаются небольшие сомнения по поводу других скриптов, которые могут быть введены. php, например |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Нет никакой опасности. Давно известно что валидацию данных нужно проводить на серверной стороне. То что делается силами javascript, на стороне клиента, предназначенно только для удобства пользователя.
|
Бормалей меня правильно понял.
Вопрос был именно о клиентской стороне. С серверной стороной я разобрался. Пожалуй, успокоюсь ответами. Спасибо. Но для большей уверенности добавлю энкодинг приведенный мною выше. ( на всякий случай ) |
Часовой пояс GMT +3, время: 06:30. |