Я занимаюсь разработкой приложения GWT, работающего на Google App Engine, и задаюсь вопросом, нужно ли мне беспокоиться о подделке межсайтовых запросов или об этом автоматически позаботятся обо мне?
Для каждого запроса RPC, требующего аутентификации, у меня есть следующий код:
public class BookServiceImpl extends RemoteServiceServlet implements
BookService {
public void deleteInventory(Key<Inventory> inventoryKey) throws NotLoggedInException, InvalidStateException, NotFoundException {
DAO dao = new DAO();
// This will throw NotLoggedInException if user is not logged in
User user = dao.getCurrentUser();
// Do deletion here
}
}
public final class DAO extends DAOBase {
public User getCurrentUser() throws NotLoggedInException {
currentUser = UserServiceFactory.getUserService().getCurrentUser();
if(currentUser == null) {
throw new NotLoggedInException();
}
return currentUser;
}
Я не смог найти никакой документации о том, как UserService
проверяет аутентификацию. Достаточно ли опираться на приведенный выше код или мне нужно больше? Я новичок в этом, но из того, что я понимаю, чтобы избежать CSRF-атак, некоторые стратегии:
- добавление токена аутентификации в
полезная нагрузка запроса вместо просто
проверка куки
- проверка HTTP
Заголовок реферира
Я вижу, что у меня установлены файлы cookie от Google, которые выглядят как значения SID, но я не могу определить по сериализованным объектам Java в полезной нагрузке, передаются токены или нет. Я также не знаю, используется ли заголовок Referer или нет.
Итак, я беспокоюсь о проблеме? Если нет, то какова лучшая стратегия здесь? Это достаточно распространенная проблема, поэтому должны существовать стандартные решения ...