Обратите внимание, это чисто гипотетическое; сама идея дает мне heebie-jeebies. Я бы предпочел иметь интерфейс управления базами данных, который охватывает все возможные ситуации. Но я подумал о том, можно ли сделать это безопасно, и в конечном итоге привязал себя ко всем узлам. Отсюда вопрос.«Безопасный» SQL для доверенного персонала - черный список, белый список, ничего из вышеперечисленного?
В любом случае: Предположим, что я хотел, чтобы некоторые пользователи моего сайта искать часть базы данных, введя «сырыми» SQL:
- доверенный (и вошедшего в, очевидно) персонал только
- читать только доступ к соответствующим таблицам
- никакого доступа к другим таблицам
- не Possiblity работать небезопасную/запрещенную SQL, случайно или иначе
Все таблицы имеют префикс области, к которой они относятся, например, videos_, photos_, forum_. Я хотел бы предоставить этим пользователям доступ на чтение к определенным разделам, но не разрешать им изменять данные напрямую, введя SQL, даже если я доверяю им, чтобы вносить изменения через интерфейс.
Я бы хотел заблокировать даже этих доверенных пользователей, скажем, всех таблиц forum_ - иначе они могли бы читать личные сообщения всех пользователей, сообщения в форумах администратора и т. Д.!
Требование «доверенного пользователя» позаботится об этом, они должны быть в определенной группе, чтобы увидеть или использовать это. Это скорее «безопасный SQL».
Это так же просто, как соединение с другим пользователем БД, который имеет только права на чтение и только на правых таблицах?
Или я бы включил черный список (и отклонил SQL, если он содержит) forum_, DROP, ALTER, UPDATE, CREATE, INSERT и т. Д.?
Или белый список SELECT, FROM, WHERE, соответствующие имена таблиц и имена полей? Это звучит безопаснее, пока я не подумаю о необходимости WHERE field_name = «Произвольный текст здесь».
Или какая-то комбинация? (Скажем, использование журнала «черного списка» SQL, хотя известно, что оно кастрировано.)
Или убежать от крика?
Как бы вы справились с этим? Действительно ли это можно сделать безопасно?
Это имело бы смысл. Я предположил, что такая среда недоступна; Я знаю, что, например, у одного из моих коллег был неприятный опыт работы с phpMyAdmin, и он не хотел бы иметь его где-нибудь рядом с нашими вещами. Не уверен, почему они доверяют мне, чтобы сделать лучшую работу ... – 2010-12-01 20:31:21