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