Ограничить доступ к DWR(Easy Ajax для Java) из панели URL

Я использую DWR, который обычно известен как Easy Ajax для Java.

Но к нему можно получить доступ напрямую через URL bar как это

http://localhost:8080/myProjectName/dwr/

отсюда я могу выполнить каждый Ajax Call, что рассматривается как угроза безопасности приложений,

Есть ли способ ограничить это?

1 ответ

Решение

Я не уверен, что вы пытаетесь достичь, но вот несколько советов:

в вашей сервлет-декларации в web.xml, Установите значение параметра в false и http://localhost:8080/myProjectName/dwr/ вернет 404 (страница не найдена).

  • Даже если вы отключите режим отладки, все равно можно запускать ваши функции. Вот почему вы можете ограничить, какие классы и какие функции этих классов доступны в Интернете в вашем drw.xml, Подробнее о dwr.xml проверьте документацию DWR

  • Помните, что каждая общедоступная функция должна проверять, разрешено ли пользователю запускать ее. Я обычно создаю такую ​​функцию:

    private void getLoggedInUser(){
        WebContext ctx = WebContextFactory.get();
        HttpSession session=ctx.getSession();
        if(session.getAttribute("loggedIn")!=null && (Boolean)session.getAttribute("loggedIn")==true){
            if(session.getAttribute("user")!=null){
                try{
                    return (Person)session.getAttribute("user");
                }catch (ClassCastException ex){
                    return null;
                }
            }else{
                return null;
            }
        }else{
            return null;
        }
    }
    

затем в начале каждой функции, доступной через Интернет, я делаю что-то вроде

    Person user=getLoggedInUser();
    if(user)==null return null;
  • Всегда имейте в виду, что посетителем вашего сайта может манипулировать javascript. Если вы публикуете функцию через dwr, предположите, что она может быть вызвана кем угодно. Я не могу подчеркнуть это достаточно: в каждой функции, публикуемой через dwr, сначала убедитесь, что пользователю разрешено ее запускать, а затем проверьте, что любые аргументы, которые мог передать пользователь, действительны.

  • Обновление: также возможно ограничить доступ к функции с помощью фильтров.

Другие вопросы по тегам