HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

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

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

  #2  
Старый 21.05.2008, 21:26
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
С нами: 10191686

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

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

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

  #3  
Старый 21.05.2008, 21:43
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
С нами: 9840758

Репутация: 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
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами: 10582516

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

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

  #5  
Старый 21.05.2008, 22:47
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
С нами: 9840758

Репутация: 808


По умолчанию

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

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

  #6  
Старый 21.05.2008, 22:51
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

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

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

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

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

  #8  
Старый 21.05.2008, 22:55
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
С нами: 9840758

Репутация: 808


По умолчанию

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



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сборник пыльной библиотеки \буржуйская\ xcedz Болталка 5 12.07.2008 18:12



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


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




English
ANTICHAT ™ © 2001- Antichat Kft.