Ограничить доступ к DWR(Easy Ajax для Java) из панели URL
Я использую DWR, который обычно известен как Easy Ajax для Java.
Но к нему можно получить доступ напрямую через URL bar
как это
http://localhost:8080/myProjectName/dwr/
отсюда я могу выполнить каждый Ajax Call
, что рассматривается как угроза безопасности приложений,
Есть ли способ ограничить это?
1 ответ
Я не уверен, что вы пытаетесь достичь, но вот несколько советов:
http://localhost:8080/myProjectName/dwr/ доступен только если вы установили
<init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param>
в вашей сервлет-декларации в 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, сначала убедитесь, что пользователю разрешено ее запускать, а затем проверьте, что любые аргументы, которые мог передать пользователь, действительны.
Обновление: также возможно ограничить доступ к функции с помощью фильтров.