ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Ajax и безопасность. Маленький вопрос.
  #1  
Старый 21.05.2008, 21:09
UID: 23319
USER: EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию Ajax и безопасность. Маленький вопрос.

Такой вопрос.
Везде в инете пишут что небезопасно передавать именно готовый java скрипт по запросу.
тоесть вот так.
Код:
response=req.responseText;
			message   = document.getElementById(Field);
			eval(response);
якобы небезапасно(ну если передать сюда именно скрипт)
например.
А например вот что возвращает сервер.
Код:
PrintData(message,'t7','Логин свободен.');
И что может быть опасного я реально непонимаю.

PS Функция PrintData естественно описанна в JS.
Вобщем кто МОЖЕТ СКАЗАТЬ чтоможет быть опасного в возврате прямых команд на JS?
 
Ответить с цитированием

  #2  
Старый 21.05.2008, 21:26
UID: 31163
USER: Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Возможно если скрипт, напрямую кидает код
$answer = "<script> document.getElementById({$id})</script>";
И отправилиб допустим через какуето функцию AddScript();

a если $id = "*/ Зловредный код /*";
вполне возможно...
 
Ответить с цитированием

  #3  
Старый 21.05.2008, 21:43
UID: 41022
USER: astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Это может быть опасно, если в ответе содержатся данные, каким-либо образом поступившие от пользователя. Другое дело, что в большинстве случаев eval не нужен.
Приведённый пример это демонстрирует. Вместо того, чтобы возвращать JS-код и исполнять его:
Код:
eval("PrintData(message,'t7','Логин свободен.');");
можно возвращать с сервера только нужные данные (в данном случае - сообщение "Логин свободен.") и вызывать функцию:
Код:
PrintData(message,'t7',req.responseText);
Тем более, что нет смысла исполнять код eval("PrintData(message...)");, если message всё равно определяется в JS. Кроме того, такой код будет сложнее поддерживать - если нужно будет изменить JS, то придётся редактировать и серверный код, поскольку там дублируются имена переменных.

Ах, да. Ещё eval – это зло .

Последний раз редактировалось astrologer; 21.05.2008 в 21:46..
 
Ответить с цитированием

  #4  
Старый 21.05.2008, 22:02
UID: 23319
USER: EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию

Если бы передавалось только сообщение то естественно его бы и писал. А там в зависимости от многих параметров. Вот и получается чем писать для некоторых отдельных случаев функцию проще вернуть. что надо делать.
Да и это так пока очень сильно черновой вариант.
И почему же евал зло? Он во всяком случае в некоторых местах даже быстрее работает.
если надо передавать неочень большой обем данных до и через Xml его тоже неочень хорошо передавать.
 
Ответить с цитированием

  #5  
Старый 21.05.2008, 22:47
UID: 41022
USER: astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
Если бы передавалось только сообщение то естественно его бы и писал. А там в зависимости от многих параметров. Вот и получается чем писать для некоторых отдельных случаев функцию проще вернуть. что надо делать.
Если заранее обдумать логику приложения, такого не будет. PHP ни к чему знать имена функций JS.
Цитата:
И почему же евал зло? Он во всяком случае в некоторых местах даже быстрее работает.
если надо передавать неочень большой обем данных до и через Xml его тоже неочень хорошо передавать.
Смайлик там не просто так .
Разумеется, JSON – тот случай, когда eval действительно оправдан.

P.S. A можно посмотреть на функцию PrintData? Интересно...
 
Ответить с цитированием

  #6  
Старый 21.05.2008, 22:51
UID: 52852
USER: d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Я во всех своих скриптах с AJAX использовал eval() всегда, не вижу ничего опасного в этом. Просто нужно следить, чтобы сервер всегда возвращал корректный JavaScript-код.
 
Ответить с цитированием

  #7  
Старый 21.05.2008, 22:54
UID: 23319
USER: EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию

Цитата:
P.S. A можно посмотреть на функцию PrintData? Интересно...
Лучше ненадо я ее уже переписал а функция была примитивнейшая.
Вобщем не буду я позориться. Просто я хотел узнать вчем прикол. Как всегда все опасно если не фильтровать.
 
Ответить с цитированием

  #8  
Старый 21.05.2008, 22:55
UID: 41022
USER: astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
Сообщение от d_x  
Я во всех своих скриптах с AJAX использовал eval() всегда, не вижу ничего опасного в этом. Просто нужно следить, чтобы сервер всегда возвращал корректный JavaScript-код.
Конечно, дело не в опасности и не в скорости – важно использовать для каждого случая подходящие методы.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сборник пыльной библиотеки \буржуйская\ xcedz Болталка 5 12.07.2008 18:12
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
Маленький вопрос про AspLinux S@cred® *nix 2 19.12.2005 02:23
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ