Разрешить ли приложению доступ к pg_catalog? - PullRequest
1 голос
/ 20 июля 2011

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

Это хорошая практика или плохая практика, позволяющая приложению читать все имена таблиц в таким образом?

ниже приводится выдержка из моего routers.py:

db1_tables = connections['db1'].introspection.table_names()      
default_db_tables = connections['default'].introspection.table_names()      
db3_tables = connections['db3'].introspection.table_names()

class MyAppRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.db_table in db1_tables :
            return 'db1'
        if model._meta.db_table in default_db_tables:
            return 'default'
        if model._meta.db_table in db3_tables:
            return 'db3'
        return 'default'

    def db_for_write(self, model, **hints):
        return self.db_for_read(model,**hints)

    def allow_syncdb(self, db, model):
        return False

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

1 Ответ

0 голосов
/ 20 июля 2011

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

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