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

dmitriymar 23.10.2011 10:31

Цитата:

Сообщение от sommer
А вот если сохранить сообщение с внедренным скриптом в базе и потом его отобразить с помощью innerHTML, то они вполне работают.

ну дак регулярками на серверной стороне удали теги <script></script> и перестанет работать.:)
или средствами того серверного языка на каком работаешь

sommer 23.10.2011 10:48

На серверную сторону валидация ASP.Net сама не пропустит любые тэги, ну а если все-таки каким-то чудом в базу сохранился код, то после обработки HtmlEncode любой код становится просто текстом...

Вопрос если в форме ввести текст с кодом и его же отобразить с помощью innerHTML - что такое страшное туда можно ввести? Желательно пример.

dmitriymar 23.10.2011 10:52

Цитата:

Сообщение от sommer
Вопрос если в форме ввести текст с кодом и его же отобразить с помощью innerHTML - что такое страшное туда можно ввести? Желательно пример.

код без тегов <script> в тексте ,это не код а просто текст.какая может быть опасность от просто текста?

sommer 23.10.2011 12:19

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

<script type="text/javascript" language="javascript">
alert('попытка');
</script>

dmitriymar 23.10.2011 12:24

Цитата:

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

чем? если теги <script> из него удалятся на сервере.
но исходя из вопроса,прочтите основы js , а именно первую страницу любого учебника по скрипту,где объясняется где js а где просто текст:-E

sommer 23.10.2011 13:17

Нет! Теги <script> удалятся только после публикации.
А при предпросмотре они не удаляются....
Предложение прочитать первую страничку учебника несерьезно.
Я на JavaScript достаточно написал кода... ( хотя я и не эксперт )

sommer 23.10.2011 13:18

PS:
Нашел вот такую функцию для энкодинга:

function encodeHTML(s) {
return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
}

somediv.innerHTML= '<p>Hello, '+encodeHTML(name)+'</p>';

B@rmaley.e><e 23.10.2011 17:09

Цитата:

Сообщение от sommer
Вопрос если в форме ввести текст с кодом и его же отобразить с помощью innerHTML - что такое страшное туда можно ввести? Желательно пример.

Я уже ответил:
Цитата:

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



Цитата:

Сообщение от dmitriymar
увести данные сможет любой кто введёт скрипт код в сообщение.

Угу, только ввести этот код сможет только текущий юзер.

Цитата:

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

Какая связь между смайликами и базой? Смайлики организуются простой заменой ключевых слов.

dmitriymar 23.10.2011 17:27

Цитата:

Сообщение от B@rmaley.e><e
Угу, только ввести этот код сможет только текущий юзер.

Цитата:

Сообщение от B@rmaley.e><e
Какая связь между смайликами и базой? Смайлики организуются простой заменой ключевых слов.

да почему?-он ведь практически явно пишет что у него за проект. и это предполагает в 99% базу. и соответственно код с инъекцией получат все, при просмотре страницы сайта.

B@rmaley.e><e 23.10.2011 17:32

Цитата:

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

В сообщениях ТС написано обратное:
Цитата:

Сообщение от sommer
Теги <script> удалятся только после публикации.

Таким образом, вредоносный код получит только текущий юзер.


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