Атака "Отказ в обслуживании" в приложении Parse.com

Я пишу небольшое веб-приложение, когда я изучаю возможности Parse.com.

Так как application_id и javascript_key являются общедоступными (как описано в документе), это означает, что любой может свободно запускать код, как показано в следующем фрагменте:

function sendRequest(){

    var query = new Parse.Query(Parse.User);
    query.find({

        success: function(results) {
            console.log("Request sucessful");       
        },

        error: function(error) {
            console.log("Request error: " + error.code + " " + error.message);
        }
    });
}

setInterval(sendRequest, (1000 / hitsPerSecond));

Я думаю, что это может привести к атакам "DOS" довольно легко - любому, кто хочет принести это приложение, нужно будет только восстановить открытые ключи и отправить много запросов.

edit У учетных записей есть ограничение на запрос/с, бесплатный план начинается с 30, но использование этого простого script может насытить любой план подписки.

Учитывая это правильно - есть ли хорошая практика против этого? Любой шаблон для применения?

Спасибо заранее,

Ответ 1

Да, ваши JavaScript-ключи для синтаксического анализа общедоступны

Они должны быть определены внутри ваших файлов JavaScript, к которым можно получить доступ.

Не сказано, что вы не можете использовать скрывать свои ключи, применяя принципы

Безопасность по Obscurity; -)

Вы можете зашифровать свои ключи и разместить функцию дешифрования прямо внутри вашего JavaScript. Вы можете еще больше усложнить поиск, скрыв эту функцию посреди большого неприятного script, которому никто не понравится, а затем минимизирует ваш JavaScript (который вы все равно должны делать). Я уверен, что можно стать "более креативным" и достичь некоторого разумного совершенства: -)

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

Уменьшить потенциальный вред, установив правильные разрешения

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

Это предотвратит повреждение плохих вещей, таких как ваши данные, что хуже, чем DoS-атака.

Это все равно позволит кому-либо узнать ваши ключи, чтобы злоупотреблять ими - не только DoS, но и более неприятные вещи, такие как подписание других людей в качестве пользователя и развязывание потока писем с подтверждением для ничего не подозревающих жертв. И поскольку вы, вероятно, хотите разрешить новым пользователям подписываться, вы не можете действительно защитить себя от этого злоупотребления (кроме "методов" предыдущего абзаца, который есть).

Разбор собственного выражения

Несколько лет назад я действительно задал этот вопрос на форуме Parse, и их ответ заключался в том, что, если это произойдет, они будут изучать это.

Заключительная идея

Наконец, предположим, что ваш бизнес сайта имеет решающее значение, и вы не можете позволить себе ждать от Парса в случае, если это действительно произойдет (это не означает, что они будут медленными - у меня действительно нет опыта с этой ситуацией).

Что вы можете сделать, так это зарегистрировать несколько других ключей приложения для возврата и сохранить копию своего сайта, чтобы вы могли быстро переадресовать своих пользователей. Или только отклонить некоторые из них.