Такой вопрос. Везде в инете пишут что небезопасно передавать именно готовый java скрипт по запросу. тоесть вот так. Code: response=req.responseText; message = document.getElementById(Field); eval(response); якобы небезапасно(ну если передать сюда именно скрипт) например. А например вот что возвращает сервер. Code: PrintData(message,'t7','Логин свободен.'); И что может быть опасного я реально непонимаю. PS Функция PrintData естественно описанна в JS. Вобщем кто МОЖЕТ СКАЗАТЬ чтоможет быть опасного в возврате прямых команд на JS?
Возможно если скрипт, напрямую кидает код $answer = "<script> document.getElementById({$id})</script>"; И отправилиб допустим через какуето функцию AddScript(); a если $id = "*/ Зловредный код /*"; вполне возможно...
Это может быть опасно, если в ответе содержатся данные, каким-либо образом поступившие от пользователя. Другое дело, что в большинстве случаев eval не нужен. Приведённый пример это демонстрирует. Вместо того, чтобы возвращать JS-код и исполнять его: Code: eval("PrintData(message,'t7','Логин свободен.');"); можно возвращать с сервера только нужные данные (в данном случае - сообщение "Логин свободен.") и вызывать функцию: Code: PrintData(message,'t7',req.responseText); Тем более, что нет смысла исполнять код eval("PrintData(message...)");, если message всё равно определяется в JS. Кроме того, такой код будет сложнее поддерживать - если нужно будет изменить JS, то придётся редактировать и серверный код, поскольку там дублируются имена переменных. Ах, да. Ещё eval – это зло .
Если бы передавалось только сообщение то естественно его бы и писал. А там в зависимости от многих параметров. Вот и получается чем писать для некоторых отдельных случаев функцию проще вернуть. что надо делать. Да и это так пока очень сильно черновой вариант. И почему же евал зло? Он во всяком случае в некоторых местах даже быстрее работает. если надо передавать неочень большой обем данных до и через Xml его тоже неочень хорошо передавать.
Если заранее обдумать логику приложения, такого не будет. PHP ни к чему знать имена функций JS. Смайлик там не просто так . Разумеется, JSON – тот случай, когда eval действительно оправдан. P.S. A можно посмотреть на функцию PrintData? Интересно...
Я во всех своих скриптах с AJAX использовал eval() всегда, не вижу ничего опасного в этом. Просто нужно следить, чтобы сервер всегда возвращал корректный JavaScript-код.
Лучше ненадо я ее уже переписал а функция была примитивнейшая. Вобщем не буду я позориться. Просто я хотел узнать вчем прикол. Как всегда все опасно если не фильтровать.
Конечно, дело не в опасности и не в скорости – важно использовать для каждого случая подходящие методы.