2010-10-20 2 views
1

Возможно ли гарантировать, что запросы GET/POST на определенный URL-адрес моего приложения Appengine, AJAX или нет, могут быть сделаны только из приложения, а не извне (т.е.), все запросы из других доменов должны быть отклонены.Google Appengine URL-безопасность

Возможно?

ответ

5

Запросы не исходят от в приложении или от другой домен. Они происходят с компьютера, с помощью браузера, сканера, сценария или любой программы. Это означает, что ваш вопрос не специфичен для движка Google, а для веб-программирования в целом. Хрупким подходом было бы полагаться на HTTP_REFERRER, но я не рекомендую этого. Вы должны следить за тем, чтобы ваши пользователи вошли в систему и отображали важную информацию только тем пользователям, которых вы знаете.

5

В дополнение к тому, что сказал @klausbyskov, вы должны посмотреть на различные механизмы защиты от Cross-Site Request Forgery (CSRF).

1

Запросы, сделанные из вашего приложения (в очереди и т. Д.), Автоматически администрируются, поэтому вы можете потребовать, чтобы запросы были сделаны администратором. Просто добавьте следующие строки в app.yaml:

- url: /whatever_url_you_want_protected 
    script: your_app.py 
    login: admin 

также хорошая идея, чтобы добавить следующие пропустить файлы в нижней части app.yaml:

skip_files: | 
^(.*/)?(
(app\.yaml)| 
(app\.yml)| 
(index\.yaml)| 
(index\.yml)| 
(#.*#)| 
(.*~)| 
(.*\.py[co])| 
(.*/RCS/.*)| 
(\..*)| 
(tests/.*) 
)$ 

Это работает для GET/пост, ajax, любой тип запроса.