Как ограничить доступ к моей функции Netlify Serverless - PullRequest
0 голосов
/ 14 февраля 2020

Я искал документы netlify и не могу понять это.

У меня есть функция без сервера, расположенная здесь

/.netlify/functions/orderCreate

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

Я знаю, что могу сделать несколько простых проверок, например убедиться, что это HTTP-сообщение, или убедиться, что у него есть действительный идентификатор сеанса, но мне бы очень хотелось, чтобы был какой-то тип аутентификации или более высокий уровень безопасности.

Поскольку все запросы должны поступать от клиентского приложения, реагирующего через запрос ajax, могу ли я ограничить его тем же доменом или чем-то еще?

1 Ответ

2 голосов
/ 14 февраля 2020

Поскольку Netlify не предоставляет способ проверки и указания c запросов на основе источника, вы можете сделать это вручную из кода своей функции и отправить ответ 403, если Origin не является вашим клиентским доменом:

exports.handler = function(event, context, callback) {
    if (event.headers["Origin"] !== "https://whateverisyourdomainname.netlify.com")
        return callback(null, { status: 403 })

    // else, do whatever your function does
}

Последние браузеры не позволяют пользователю самому устанавливать заголовок Origin. Однако ничто не мешает кому-либо создать запрос curl и подделать заголовок Origin, чтобы выполнить вашу функцию . Если вы действительно хотите sh предотвратить это, вы должны установить правильный процесс аутентификации для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...