Как ограничить доступ к моему веб-сервису?

Я имею http://example.com/index.html, который из HTML использует JavaScript (XmlHttpRequest) для вызова веб-сервисов в http://example.com/json/?a=...&b=...

Веб-сервис возвращается к index.html массив JSON информации, которая затем будет отображена на index.html.

Так как любой может просмотреть исходный код для index.html и посмотрите, как я называю веб-сервис JSON (http://example.com/json/), как я препятствую тому, чтобы люди назвали мой веб-сервис JSON непосредственно?

Так как веб-сервис является по существу открытым чтением в мою базу данных, я не хочу, чтобы люди злоупотребили веб-сервисом и запустили выбирающие данные непосредственно из веб-сервиса, запускаю DoS мой сервер, выбирая больше информации, чем они должны и т.д.

ОБНОВЛЕНИЕ:

Нет ли никакой способ ограничить запросы на http://example.com/json/ только прибыть из того же сервера (IP) и URL-запрос http://example.com/index.html?

Значение, не может http://example.com/json/ обнаружьте, что Запрашивающая сторона ($_SERVER['REQUEST_URI'] == http://example.com/index.html) и только позвольте это?

6
задан Hank 5 April 2010 в 15:10
поделиться

4 ответа

Существует множество способов повысить безопасность своей службы. Проверьте это из

0
ответ дан 17 December 2019 в 02:26
поделиться

Нет простого способа предотвратить это . Если ваш сервис не пользуется большой популярностью и, следовательно, может стать целью атак типа «отказ в обслуживании», я бы не стал беспокоиться.

Одна вещь, которая пришла мне в голову, - это использование одноразовых токенов (действительных для 10 или 100 запросов).

Другой (наивный) подход заключается в проверке наличия заголовка X-Requested-With в запросе, но, конечно, это можно легко подделать. Итак, мой совет: ничего не делайте, если проблема не является реальной .

Еще одна идея: hash calc .Идея состоит в том, чтобы требовать от клиента выполнения довольно дорогостоящих вычислений для каждого запроса, в то время как проверка вычислений на стороне сервера обходится дешево. Для одного запроса накладные расходы очень малы, но, скажем, для 1000 запросов это может занять значительное количество процессорного времени. Я понятия не имею, использовался ли hashcalc для предотвращения DoS-атак веб-сервисов. Несколько лет назад это было предложено в качестве меры защиты от спама, но так и не стало популярным.

4
ответ дан 17 December 2019 в 02:26
поделиться

Вы не можете должным образом защитить веб-сервис, который можно вызвать из javascript на стороне клиента.

Вы можете попытаться использовать методы защиты через неясность, такие как обфускация javascript, но это не остановит кого-то мотивированного.

0
ответ дан 17 December 2019 в 02:26
поделиться

Ответ действительно просто, используйте защиту CSRF. http://en.wikipedia.org/wiki/Cross-site_request_forgery

Просто, когда пользователь заходит на ваш сайт (index.php), введите сеанс: CSRF = (RANDOM_HASH)

Запросить запрос JSON, example.com/json.php?hash = $ _ SESSION ['CSRF']

И в json.php проверьте, $ _ GET ['hash'] соответствует $ _ SESSION ['CSRF']

Все просто ... Это серверное решение!

1
ответ дан 17 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: