2013-12-01 4 views
0

Я разрабатываю бизнес-приложение с помощью struts2. Я хотел бы ограничить прямой доступ к URL. Если пользователь доступен действие браузером URL-адрес прямого доступа, не нажмите на ссылку, Я хотел бы показать страницу ошибок. (Вы не можете использовать URL-адрес прямого доступа.)Ограничить прямой доступ к url ​​в struts2

Если кто-то есть решение , пожалуйста, поделитесь со мной. Спасибо.

+0

Могу ли я просто спросить, почему вы не хотите, чтобы пользователь мог получить доступ к ресурсам напрямую по адресной строке?(если у него есть все учетные данные) – Franck

+0

Мне нужно контролировать доступную защиту в приложении. Пользователь может использовать или использовать приложение только с помощью ссылки или кнопки ui в приложении. Пользователь не может получить доступ к приложению по прямому доступу по URL. – sithu

+1

Если у вас есть доступ с помощью «нажмите ссылку», что отличает его от доступа к нему «по прямому доступу к браузеру»? Не могли бы вы прояснить это? У вас есть пример кода, чтобы продемонстрировать ваше понимание проблемы? Что такое безопасность, вы хотите иметь контроль доступа? –

ответ

0

Пользователь может сделать запрос, являющийся адресом.

Этот URL можно назвать

  1. По чокаясь ссылку
  2. Отправка формы
  3. вручную тип URL в адресной строке
  4. Сделать запрос с использованием некоторых библиотек, как достоянию-HTTP
  5. .....

Их много. Вы не можете убедиться, какой из них следует использовать. Сервер (Struts Action) получает эти запросы и обрабатывает их.

Даже если вы можете определить запрос камеры по ссылке или кнопке, вы не можете доверять ей. Хакер может легко имитировать объект запроса, поступающий из разных источников.

Я считаю, что вы не в правильном пути. Или, пожалуйста, объясните больше.

+0

Я имею в виду No.3 Введите URL-адрес вручную в адресную строку. Наш url имеет значение параметра. Таким образом, пользователь может узнать значение параметра. Я хочу ограничить доступ к URL-адресу. Пользователь может сначала получить доступ к www.example.com. После этого пользователь использует приложение, щелкнув ссылку или отправив форму. – sithu

+2

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

1

Требование довольно странное & Я не понимаю причину.

Но позвольте мне объяснить, о том, как такая функциональность может быть достигнута:

  1. Когда прямой URL-запрос делается, то заголовок Referer нет в запросе.

  2. Вы можете просто написать перехватчик, который проверяет, имеет ли входящий запрос заголовок Referer & он исходит из вашего домена. Если нет, вы можете отправить сообщение об ошибке, если да, а затем продолжить.

Хотя это можно легко обойти, но большинство ваших пользователей этого не сделают.

Пример кода Interceptor:

public String intercept(ActionInvocation ai) throws Exception { 
     HttpServletRequest request = 
       (HttpServletRequest) ai.getInvocationContext().get(StrutsStatics.HTTP_REQUEST); 
     if (request != null) { 
      if (request.getHeader("Referer") == null) { 
       return "error"; 
      } 
      return ai.invoke(); 
     } 
} 
0

Может быть, вы можете проверить сессию для конкретных значений, с тем, чтобы подтвердить, что запрос является авторизированным один, вы можете даже проверить для некоторых значений в запросе, вы может использовать скрытые поля в JSP для этой цели. Проверка значения может быть выполнена в методе prepare(), в действии, которое будет выполняться каждый раз, когда вызывается действие, поэтому перед рендерингом jsp вы можете легко перенаправить на любую страницу с помощью написания логики в методе подготовки. Для использования метода подготовки вы хотите реализовать интерфейс Preparable

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