Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Безопасный Javascript |
Автор: Knuckles 12.10.2008, 09:15 |
Всем привет. Мне как кандидату на работу дали тестовое задание. Звучит так: Есть форма с набором инпутов, которые необходимо проверить перед отправкой, некоторые поля просто должны быть непустыми, а некоторые должны содержать email. ... Особенности реализации: Обработчик события должен должен быть один на всю форму. При создании функционала следует придерживаться "безопасного javascript" - сама html страница не должна содержать инлайнового javascript. Я не совсем понял, что такое "безопасный javascript". Даже если скрипт находится в отдельном файле, в самом html должны быть привязки событий элементов ввода к функциям проверки, которые сами вообще-то являются скриптами. То есть если я пишу <input type="text" onkeypress="check()">, то значение атрибута onkeypress выполняется как скрипт. Уточнять у работодателя не хочется, чтобы не показаться полным нубом, да и времени нет (хотелось бы сделать задание сегодня). Гугл на такой общий запрос дает конечно же не то, что нужно. Подскажите, что имелось ввиду. Заранее спасибо ![]() |
Автор: bars80080 12.10.2008, 09:27 |
максимально удалённый от копания в нём чужих ручек, ибо полностью безопасного, конечно, достичь нельзя |
Автор: Knuckles 12.10.2008, 09:31 |
А можно подробнее? И как это относится к inline Javascript? |
Автор: skyboy 12.10.2008, 09:58 |
Knuckles, приходит в голову только добавка обраобтчиков через addEventListener/attachEvent. но если код "привязывания" обработчика к форме будет находиться в скрипте, подключенном через <script src="...">, то как определить, что тело уже загружено? можно, в принципе, поставить setInterval, чтоб проверяло: если в DOM-дереве появился элемент с заранее известным id(форма), то цеплять обработчик. если не появился - ждать дальше. А может, скрипт в head'e выполнится только после загрузки страницы... я не уверен, надо проверять. |
Автор: bars80080 12.10.2008, 10:20 |
а фиг его знает, может это сильно проффессионально заданный вопрос, но для меня inline - это расположение элементов в строчку. никогда с js не связывал по-моему, надо просто написать нормальный простой обработчик, затем может пропустить через некий оптимизатор, дабы усложнить читаемость кода и засунуть в отдельный файл. потом можно накидать обманок (но, имхо, это уже и есть нубство) далле следует рассказать работодателю, что мол, javascript на 100% безопасным не сделаешь, и по любому решающую проверку нужно делать на сервере, а js использовать только в качестве предупредительной системы, чтобы обычный пользователь чего-нибудь не забыл |
Автор: Knuckles 12.10.2008, 10:23 |
skyboy, да я тоже думал над этим. В принципе можно повесить функцию привязки обработчиков на события DOMContentLoaded (для Mozilla), onload с аттрибутом defer (для IE) и без defer для остальных. В общем, я надеюсь, это именно то, что от меня ожидается ![]() Добавлено через 6 минут и 42 секунды bars80080, насколько я понимаю, inline javascript это встраивание скрипта прямо в код html. Считается дурным тоном по некоторым причинам. В любом случае, всем спасибо за мысли и предложения. |
Автор: skyboy 12.10.2008, 16:01 |
в любом случае, сильно упрощает отладку. а вопросы безопасности решать на стороне клиента - вообще странно. на стороне клиента могут быть механизмы, для упрощения работы пользователя, да. но шифровать валидацию формы и игнорировать проверку на стоорне сервера - как-то по-детски. |
Автор: nerezus 16.11.2008, 11:44 |
[humour] Безопасный JS - это когда он используется нен в браузере IE [/humour] |
Автор: bars80080 16.11.2008, 15:29 |
на шутку даже близко не тянет, учитывая установленный в базовой версии ФФ инспектор DOM, который позволяет править любые значения страницы, не оглядываясь на разработчиков |