Как случайно не сделать свою базу публичной

Учебные руководства и значения по умолчанию в ORM системах нам всегда говорят, что каждая таблица SQL должна иметь автоинкрементный ID. Почему автоинкрементные идентификаторы представляют проблему? Потому, что это означает, что люди могут скачать вашу базу данных.

Это не новая проблема, она была хорошо изучена за прошедшие двадцать лет, но это проблема, о которой я говорю людям в своих рассказах об API, и она кажется новой для многих. Люди хотят знать, как избежать её, и почему данные из API не могут быть никогда в безопасности.

Социологическое исследование

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

У них были следующие два URL адреса в их API:

  1. GET /artworks/234
  2. GET /users/6138

Какие проблемы здесь?

Утечка «успеха» к конкурентам

Как стартап, у вас есть конкуренты. Разрешение конкурентам узнать размер вашего набора данных, и сколько пользователей вы имеете в своей системе, могло бы привести к некоторым довольно неловким ситуациям.

Глядя на URL GET /users/6138, я могу перейти на GET /users/1. Если мне покажутся данные, то я могу обоснованно предположить, что у них есть, по крайней мере, 6 138 пользователей, а общее количество я смогу легко найти, написав скрипт, который инкрементирует идентификатор и считает каждый HTTP 200 статус, а также учитывает такие статусы как 404 или 410, для предоставления точного числа активных пользователей и сколько закрыло свои аккаунты.

Это могло бы смутить большую компанию или, по крайней мере, уничтожить маленький стартап.

Решение

Если вы застряли с 1, 2, 3 в БД из-за придирчивой ORM или из нежелания изменить существующую схему и все данные, идущие с ней, то вы можете хранить свои идентификаторы как раньше, но «скрыв» их!

Обфускация позволяет превратить 123 в «df234FSafd» и обратно в 123. Ваши идентификаторы остаются такими же, но пользователь не может сделать ++$id где-либо, потому что «df234FSafd» + 1 ничего не даст.

Используется скрытый секретный ключ (соль), без которого строки не обратимы, таким образом, они относительно безопасны.

Tiny — основан на Forrst и создан великолепным Заком Кицмиллером

Источник: 1

Оцени публикацию:
  • 1,5
Оценили человек: 1

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Введите изображенные цифры:
Captcha
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »