Ограничение использования Select * в MySQL в конкретной таблице - PullRequest
3 голосов
/ 29 марта 2011

У меня есть таблица, содержащая некоторые конфиденциальные данные, которые я хотел бы защитить дальше, чем уже принятые меры.В случае вторжения, в результате которого злоумышленник получает наш исходный код PHP, я хочу дополнительно защитить некоторые данные в базе данных.

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

В качестве отказоустойчивого устройства я хотел бы ограничить операторы выбора определенной таблицей.Наш код никогда не должен извлекать из таблицы более одной записи за раз.Есть ли способ ограничения количества строк, возвращаемых из таблицы с административной стороны MySQL, чтобы такие запросы, как SELECT * FROM secure_data_table;не возможно?

Ответы [ 4 ]

5 голосов
/ 29 марта 2011

Существует ли способ ограничения количества строк, возвращаемых из таблицы с административной стороны MySQL

Обычный способ сделать это - получить доступ DENY к таблице.

Создание хранимой процедуры, которая выбирает один элемент из таблицы, например, по идентификатору, и предоставляет доступ GRANT только к этому процессу.

0 голосов
/ 29 марта 2011

Почему бы не перенести ваши запросы в базу данных тоже (параметризованные хранимые процедуры, нет доступа на уровне таблицы)?

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

0 голосов
/ 29 марта 2011

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

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

0 голосов
/ 29 марта 2011

Из документов (http://dev.mysql.com/doc/refman/5.0/en/grant.html):

 GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
     ON {tbl_name | * | *.* | db_name.*}
     TO user_name [IDENTIFIED BY 'password']
         [, user_name [IDENTIFIED BY 'password'] ...]
     [REQUIRE
            [{SSL| X509}]
    [CIPHER cipher [AND]]
    [ISSUER issuer [AND]]
    [SUBJECT subject]]
     [WITH GRANT OPTION]

Для столбца можно указать только значения priv_type (т. Е. При использовании предложения column_list):SELECT, INSERT и UPDATE.

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