Учебные руководства и значения по умолчанию в ORM системах нам всегда говорят, что каждая таблица SQL должна иметь автоинкрементный ID. Почему автоинкрементные идентификаторы представляют проблему? Потому, что это означает, что люди могут скачать вашу базу данных.
Это не новая проблема, она была хорошо изучена за прошедшие двадцать лет, но это проблема, о которой я говорю людям в своих рассказах об API, и она кажется новой для многих. Люди хотят знать, как избежать её, и почему данные из API не могут быть никогда в безопасности.
Я заключил контракт на стартап, проходящий через акселератор, где одна из команд создавала уникальную базу данных сгенерированных пользователями фотографий, и эти фотографии были произведениями искусства. Такие произведения, как удивительное граффити, неизвестные установки и т.д., недоступные больше нигде в интернете.
У них были следующие два URL адреса в их API:
Какие проблемы здесь?
Как стартап, у вас есть конкуренты. Разрешение конкурентам узнать размер вашего набора данных, и сколько пользователей вы имеете в своей системе, могло бы привести к некоторым довольно неловким ситуациям.
Глядя на 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
Комментарии
Комментариев пока нет.