2015-04-10 1 views
0

Скажите, что я делаю импорт страниц из домена в GSP, например:делает импортирования доменов в GSP сделать страницы уязвимыми

<%@ page import="com.sample.entity.Book" %> 

Чтобы использовать его на страницу с помощью

<g:select from="${Book.list()}" 
      optionKey="id" 
      optionValue="title" 
      name="bookSample"/> 

Это плохая практика программирования для использования импорта? Я очень новичок в Grails и видел эту практику во многих учебниках, но мое лидерство мешает мне сделать это, потому что, по его словам, хакеры могут легко получить данные из db. Я спорил против этого, но я думаю, мне нужна поддержка.

Я согласен с тем, что на вышеизложенном более удобно использовать контроллер для получения списка книг, но я думаю, что я не понимаю, что использование <% @ page import = ""%> является плохое кодирование, поскольку делает страницу уязвимой.

Я знаю, что GSP скомпилированы, поэтому ссылки на импорт не отображаются на HTML-страницах.

Обновление: спасибо вам за то, что вы указали свои входы. Я обновил вопрос, чтобы уделить больше внимания. Если кто-то сказал вам, что это неправильно, и это было причиной - вы считаете, что за пределами лучших практик и больше о безопасности, которую я действительно не представляю, как через импорт

+2

У вас плохой лидерство. –

ответ

4

Я не уверен в том, хакеры будут делать плохие вещи "рассуждения, но есть лучший подход к использованию GORM непосредственно в GSP.

Давайте будем ясно, что использование GORM непосредственно в GSP не является технически неправильным, это просто плохая практика. Зачем? Это не дает вам четкого разделения вашей модели и вида.

Ваш взгляд (GSP) не должен строиться на модели. Он должен просто использовать его для визуализации представления. Однако ваш контроллер должен создать модель, которую использует ваш просмотр (GSP).

В вашем примере эта модель исходит из запроса GORM. Однако в будущем вы можете в конечном итоге делегировать это службе, которая использует некоторое микро-сервис.

Поскольку модель строится в контроллере, а не в GSP, вам не придется расчесывать все ваши GSP и находить, где вам нужно будет реорганизовать это. Это должно быть так же просто, как изменить контроллер.

Настоящая причина, по которой вам следует избегать использования GORM в GSP напрямую. Разделение проблем.

Что касается фактического импорта домена? Это не очень плохая практика, так как ваша модель, скорее всего, будет содержать экземпляры домена. Это немного многословный (и не очень необходимый для большей части), но эта многословие также позволяет документировать, какие классы домена используются в представлении.

Обычно я не использую определенный импорт в своих ВСП, потому что обнаружил, что модель меняется с течением времени, и сохранение импорта становится проблемой.

Обновление После того, как я еще больше подумал, что не могу на всю жизнь придумать истинную причину, почему использование импорта в вашем ВСП будет считаться угрозой безопасности. У вас впереди много объяснений, или вам нужно его заменить.

+0

точно. Я также не понимаю его хакерские рассуждения. форма, которую я создал с импортом, имеет экземпляр домена, и он был фактически сформирован изначально через строительные леса. – alraceya

+0

Я действительно хочу сказать о разделении проблем и на самом деле согласен с этим, но я думаю, что меня беспокоила его идея о том, что импорт доменов в GSP сам (как и в заявлении на импорт сверху) является плохой практикой из-за проблем с взломом – alraceya

0

Я обнаружил, что чем меньше логики вы используете в своих GSP, тем лучше, так как они становятся все сложнее и сложнее, они становятся неуправляемыми и невероятно трудными для отладки; особенно если у вас есть вложенные шаблоны.

Самодельные системы Grails делают это, и я считаю, что это ужасная практика - данные о представлении должны быть заполнены в контроллере, который сам должен получить данные от службы, которая делает объекты домена взаимосвязи значимыми способами , или перехватывает базу данных транзакционно.

+0

Hi @JaviCasa благодарит за ваш ответ. да, я согласен с тем, как важно сохранить GSP просто! Я думаю, что мой вопрос потерял фокус (поэтому я его обновил). Я соглашаюсь на разделение проблем, и я стараюсь изо всех сил практиковать это. Я смущен тем, что импорт домена - плохое кодирование, потому что он может сделать страницу уязвимой для хакеров. – alraceya

+0

Это неправильно само по себе, это рендеринг простых данных на стороне сервера, он может сбиться с пути, чтобы запутать его, к сожалению, не редкость в смешении PHP-рендеринга с SQL-запросами, что позволяет впрыскивать? В любом случае клиенты не могут взаимодействовать с периодом фрагмента GSP, только с параметрами, которые они отправляют на Ajax или отправляют, если вы используете их, вот о чем вы должны быть осторожны. – JaviCasa

Смежные вопросы