Защита файлов gsp - PullRequest
       20

Защита файлов gsp

2 голосов
/ 11 августа 2011

Я относительно новичок в Spring, но очень плохо знаком с Spring Security и Grails. Короче говоря, я знаю, что рекомендуется не разрешать обслуживание файлов .jsp, вы должны выбросить их в WEB-INF и настроить свои контроллеры так, чтобы они извлекались из нужного места.

Как бы я поступил так в Grails? Кажется, что я бы разрушил идею «соглашения о конфигурации», добавив gsp в WEB-INF, а затем записав логику во все мои контроллеры (если это даже возможно сразу ...) Кажется, мне придется изменить некоторые базовые конфигурации Grails .

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 13 августа 2011

ОК, я не видел полного ответа на этот вопрос здесь (или в другом месте одного StackOverflow), который дает полный действительный результат, поэтому вот что я придумала:

Во-первых, создайте новыйконтроллер:

grails create-controller gspForbidden

Откройте это и добавьте это к действию индекса:

index = {
    response.status = 404
}

Затем откройте grails-app/conf/UrlMappings.groovy и добавьте это под закрытием static mappings:

"/grails-app/**.gsp"(controller:"gspForbidden")

Это перенаправит любую попытку просмотра GSP непосредственно на контроллер gspForbidden.Этот контроллер, в свою очередь, просто отображает 404 - файл не найден.Самое лучшее в этом то, что он полностью скрыт - ничто не говорит о том, что путь GS был правильным, поэтому меньше шансов раскрыть что-то важное в дизайне приложения.

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

2 голосов
/ 12 августа 2011

Небольшая поправка к предыдущему посту:

Простое соблюдение соглашения в Grails не мешает кому-то, кто догадывается, где живет gsp, напрямую его ударить (я только что попробовал, это работает).

1 голос
/ 11 августа 2011

Из документации плагина Spring Security:

package com.testapp
import grails.plugins.springsecurity.Secured

class SecureController {

   @Secured(['ROLE_ADMIN'])
   def index = {
      render 'Secure access only'
   }
}

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

для получения дополнительной информации обратитесь к:

http://grails -plugins.github.com / Grails-весна-безопасности ядро ​​/ документы / ручной /

учебники хороши для начала.

0 голосов
/ 11 августа 2011

На самом деле вам не нужно беспокоиться об этом в Grails.Если вы будете следовать соглашениям об использовании представлений и контроллеров, он обработает все подробности о том, что страницы GSP не доступны напрямую.

Что касается интеграции с Spring Security, опять же, если вы будете следовать одному из рекомендуемых шаблонов (защита URL или аннотации в ваших контроллерах), у вас все будет хорошо.

...